Po przejrzeniu kilku przykładów, muszę powiedzieć, że nie rozumiem, co przynosi polimorfizm F-Bounded.wyjaśnienie typów objaśnienia scala f
By posłużyć się przykładem ze szkoły Scala (https://twitter.github.io/scala_school/advanced-types.html#fbounded)
Wyjaśniają, że potrzebują pewnego rodzaju F-ograniczony tak, że podklasa może wrócić podtypu. Tak robią coś takiego:
trait Container[A <: Container[A]] extends Ordered[A]
class MyContainer extends Container[MyContainer] {
def compare(that: MyContainer) = 0
}
Ale nie widzę, jaki jest zysk z użyciem tego rodzaju typu, kiedy można użyć coś takiego:
trait Container[A] extends Ordered[A]
class MyContainer extends Container[MyContainer] {
def compare(other: MyContainer) = 0
}
Każde wyjaśnienie jest bardzo mile widziane
Dzięki
Myślę, że mam punkt Nishana i dla mnie ma to sens, ale część, o której mówisz, jest częścią, która mnie wprawia w zakłopotanie. Z twojego przykładu możesz zdefiniować A like: trait Container [A] i uzyskać taki sam wynik. Nie będziesz musiał nadpisywać funkcji pary w sublimasie –
Och, nieważne, właśnie to dostałem. Jeśli zrobisz cechę Container [A], nie możesz zagwarantować, że w podklasie zwracany typ A jest typu Container. Wielkie dzięki –