1
trait Base
{
val widget = new Widget {}
trait Widget
}
trait Child1 extends Base
{
override val widget = new Widget {}
trait Widget extends super.Widget
}
trait Child2 extends Base
{
override val widget = new Widget {}
trait Widget extends super.Widget
}
class Sample extends Child1 with Child2
{
override val widget = // Here be dragons
}
有什麼方法可以在Sample中正確組成小部件嗎?如果Child1#Widget和Child2#Widget具有可分辨的名稱,它工作正常,但我很好奇它是否可以像這樣訪問它們。如何通過顯式名稱空間訪問內部類?
我與new Child1#Widget with Child2#Widget
失敗: 「不是合法的前綴構造」
或
override val widget =
{
val a = this: Child1
val b = this: Child2
new a.Widget with b.Widget {}
}
「非法繼承:繼承特質的Widget不同類型實例」
對於爲什麼這種方法不能使用包裹限定符的一個旁註:https://issues.scala-lang.org/browse/SI-1915 – Taig 2014-11-16 19:49:42