6

我有一个关于字体设计的问题。为什么 Int 不扩展 Ordered 特征。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
4

1 回答 1

9

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

于 2013-04-14T15:56:24.303 回答