Scala排序API使用隐式对象。 e.g:
def msort[T](xs: List[T])(implicit ord: Ordering) = { ...}
Java使用Comparable接口达到同样的目的。
public static <T extends Comparable<? super T>> void sort(List<T> list) { ... }
为什么Scala更喜欢隐式类型而不是扩展特征?隐式参数有什么好处?
答案 0 :(得分:3)
对于给定类型,您可以将msort
与多个Ordering
一起使用。扩展Comparable
的类型只能以一种方式扩展它。 (有些人认为这是一个缺点。)
您可以为在没有相关知识的情况下实现的类型提供Ordering
(例如,任何Java类型!)。如果现有类型尚未扩展Comparable
,则无法进行扩展{。