def someA
(trait B
에서)은 B
과 같은 C#MyType
과 동일한 trait A
을 사용합니까? (그런 다음 A#MyType =:= B#MyType
)케이크 모양 및 유형
trait C {
type MyType
}
trait A {
self: C =>
def doSomething(s: MyType) { println(s.toString)}
}
trait B {
self: C =>
def someA: A
def myType: MyType
def action = someA.doSomething(myType)
}
// Mix part
case class Ahoy(value: String)
trait ConcreteC extends C {
type MyType = Ahoy
}
class PieceOfCake extends B with ConcreteC {
val someA = new A with ConcreteC
val myType = Ahoy("MyType")
}
컴파일되지 않습니다. 형식이 일치하지 않습니다. 당신은 MyType
의 경로 독립 버전을 사용 doSomething
및 myType
을 선언 할 수 있습니다
[error] found : B.this.MyType
[error] required: _1.MyType where val _1: A
[error] def action = someA.doSomething(myType))
좋아, 컴파일되지만 더 구체적인 SomeType을 B와 섞을 수는 없습니다. – jwinandy