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

RAb*_*ham 6 scala implicit implicit-conversion

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

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

示例摘自Scala中的Programming

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


maxListImpParm(List(1,5,10,3)) // works because of implicit methods
Run Code Online (Sandbox Code Playgroud)

om-*_*nom 9

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