2013-04-14 28 views
5

我對類型設計有疑問。爲什麼Int沒有擴展Ordered特徵。是不是天生訂購的?爲什麼Int不能繼承/擴展有序[Int]

相反,scala庫提供了將Int轉換爲Ordered [Int]的隱式'orderer'方法。這裏有什麼設計選擇?

實施例從書編程Scala中採取

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


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

聲明可以縮寫爲:'def maxListImpParm [T <%Ordered [T]](elements:List [T]):T = ???' –

回答

7

由於INT(和從AnyVal繼承了一些其它類)是短暫的 - 在運行時它通常由不具有類的概念原始值表示(和因此繼承)。當然,也有例外情況,比如當你將項目放入集合中時,將Int boxing放到完整的引用類實例中,但typeclass提供了一個通用解決方案。此外,typeclasses是more flexible than inheritance

相關問題