Chcę zastąpić typ abstrakcyjny cechą z <:
, a nie z =
(jak tutaj odpowiedź Scala Upper Bounds : value is not a member of type parameter).Wzór ciasta z nadpisującym typem abstrakcyjnym nie działa z górnymi granicami typów
Chcę użyć wzoru ciasta, ale to nie działa, nie rozumiem dlaczego?
trait A {
def ping = println("ping")
}
trait Cake {
type T
}
trait S { this: Cake =>
type T = A
def t: T
t.ping
}
OK, przykład ten bieg, ale w moim przypadku użycia rzeczywistym chcę zastąpić typ z <:
a nie z =
.To wydaje się niemożliwe, aby uzyskać dostęp do funkcji t, dlaczego?
trait S { this: Cake =>
type T <: A
def t: T
t.ping
}
zwróci błąd value ping is not a member of S.this.T