Scala 类型参数化与抽象成员详解
1. 类型参数化中的上界
在 Scala 中,类型参数化是一个重要的特性。当我们设计排序函数时,有时需要确保传入列表的元素类型具备比较能力。例如,之前展示过的合并排序函数,它接受一个比较函数和一个待排序列表作为参数。另一种组织排序函数的方式是要求列表的元素类型混入 Ordered
特质。
Ordered
特质允许我们通过实现其抽象方法 compare
来使用 <
、 >
、 <=
和 >=
这些比较运算符。以下是一个 Person
类混入 Ordered
特质的示例:
class Person(val firstName: String, val lastName: String)
extends Ordered[Person] {
def compare(that: Person) = {
val lastNameComparison =
lastName.compareToIgnoreCase(that.lastName)
if (lastNameComparison != 0)
lastNameComparison
else
firstName.compareToIgnoreCase(that.firstName)
}