我对类型设计有疑问。为什么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
答案 0 :(得分:8)
因为Int(以及从AnyVal继承的一些其他类)是短暂的 - 在运行时它通常由原始值表示,它根本没有类(因此继承)的概念。当然,有一些例外,例如当您将项目放入集合时,Int拳击到完整的引用类实例,但是类型类提供了一个通用的解决方案。此外,类型类是more flexible than inheritance。