2013-04-14 27 views
5

'dan miras almıyor/uzanmıyor Tip tasarım hakkında bir sorum var. Int, Neden Sipariş edilen özelliği genişletmiyor. Int doğa tarafından emredilmedi mi? Bunun yerine, scala kütüphanesi Int'ten Siparişe [Int] dönüştüren örtülü 'sipariş' yöntemleri sunar. Burada yapılan tasarım seçenekleri neler? Scala kitap programlama alınanNiçin Siparişi [Int]

Örnek

Int (ve AnyVal miras başka sınıflar) kısa ömürlü olduğu için
def maxListImpParm[T <% Ordered[T]](elements:List[T]):T= ... 


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

Bildiri şu şekilde kısaltılabilir: 'def maxListImpParm [T <% Sipariş [T]] (ögeler: Liste [T]): T = ???' –

cevap

7

- zamanında genellikle (sınıf bir bağı yoktur temel bir değere ile temsil edilen ve Böylece miras) hiç de. Tabii ki, koleksiyona ürün koyduğunuzda tam üfleme referans sınıfı örneğine Int boks gibi istisnalar vardır, ancak typeclass tek bir evrensel çözüm sunar. Üstelik, tipecler more flexible than inheritance'dur.