2013-04-14 29 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

相关问题