2013-08-20 1 views
3
나는 다음과 같은 수업을

: 이제Understaing 추상 유형

abstract class Base { 
    type T 
    def myMethod: T 
} 

abstract class B extends Base { 
    type T <: String 
} 

abstract class C extends Base { 
    type T <: Int 
} 

은 내가 작성하는 경우이 :

class Test{ 
    self: B with C => 
    // do sth with myMethod 
} 

MyMethod라는 int 형식의 STH가 발생합니다. 반면에 다음과 같이 쓰면 :

class Test{ 
    self: C with B => 
    // do sth with myMethod 
} 

String을 입력하게됩니다. 누군가 그것을 설명 할 수 있습니까?

답변

0

예, 할 수 있습니다! a bug입니다! Martin Odersky 자신이 말한 "Scala 유형 시스템의 근본적인 문제"의 결과입니다 (이 문제에 대한 논평 참조, 오늘 아침 일찍부터 this question).

관련 문제