为什么Int不从Ordered [Int]继承/扩展

时间:2013-04-14 15:52:38

标签: scala implicit-conversion implicit

我对类型设计有疑问。为什么Int不扩展Ordered特征。 Int不是天生的命令吗?

相反,scala库提供隐式'orderer'方法,将Int转换为Ordered [Int]。这里有哪些设计选择?

“Scala编程”一书中的示例

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


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

1 个答案:

答案 0 :(得分:8)

因为Int(以及从AnyVal继承的一些其他类)是短暂的 - 在运行时它通常由原始值表示,它根本没有类(因此继承)的概念。当然,有一些例外,例如当您将项目放入集合时,Int拳击到完整的引用类实例,但是类型类提供了一个通用的解决方案。此外,类型类是more flexible than inheritance