Aşağıdaki özellikler ve sınıflar göz önünde bulundurulur. Neden bu derleme? Bu aslında bir şey için kullanılabilir mi?Soyut tip üyelere sahip beton sınıfları
trait Container {
type A
}
trait AnotherContainer[B]{
def x(b : B) : B
}
trait Mixed extends Container with AnotherContainer[Container#A]
class Impl extends Mixed{
def x(a : Container#A) = a
}
new Impl().x _
scala> new Impl().x _
res0: (Container#A) => Container#A = <function>
Güncelleme:
class Baz { type T; }
aslında bir özelliktir mı ama bunun için motivasyon bulamadık: #1753.
Bana bir hata gibi görünüyor. –
Neden? Mixed içinde bir AnotherContainer örneğinde B A, bu yüzden x için imza AnotherContainer.x ve Impl.x arasında tutarlıdır. Yoksa bir şey mi özlüyorum? –
@Randall Eh, 'tip A 'soyut ve ben her yerde somutlaştığını görmüyorum. Bu yüzden, '' soyut olma ihtiyacı '' hatasını döndürmek için 'Impl' derlemeyi beklerdim. –