2013-04-14 10 views
5

Mam pytanie dotyczące projektu typu. Dlaczego Int nie rozszerza uporządkowanej cechy. Czy nie jest zamawiane przez naturę?Dlaczego Int nie dziedziczy/nie rozszerza się z zamówionego [Int]

Zamiast tego biblioteka scala udostępnia ukrytą metodę "zamawiającego", która zamienia Int na uporządkowaną [Int]. Jakie są tutaj wybory projektowe?

Przykład wzięty z książki Programming w Scala

def maxListImpParm[T <% Ordered[T]](elements:List[T]):T= ... 


maxListImpParm(List(1,5,10,3)) // works because of implicit methods 
+0

Deklarację można skrócić do: 'def maxListImpParm [T <% Zlecony [T]] (elementy: Lista [T]): T = ??? –

Odpowiedz

7

Ponieważ Int (i niektóre inne klasy odziedziczone AnyVal) jest ulotne - przy starcie zwykle reprezentowany przez prymitywną wartość, która nie ma pojęcia o klasie (i w ten sposób dziedziczenie). Oczywiście istnieją wyjątki, takie jak Int boxing do pełnowartościowej instancji klasy odniesienia, gdy umieszczasz przedmiot w kolekcji, ale typeclass zapewnia jedno uniwersalne rozwiązanie. Co więcej, typami są: more flexible than inheritance.

Powiązane problemy