-1

Scala 排序 API 使用隐式对象。例如:

def msort[T](xs: List[T])(implicit ord: Ordering) = { ...} 

Java 使用 Comparable 接口来达到同样的目的。

public static <T extends Comparable<? super T>> void sort(List<T> list) { ... }

为什么 Scala 更喜欢隐式类型而不是扩展 trait?隐式参数有什么好处?

4

1 回答 1

3
  1. 您可以将msort多个Orderings 用于给定类型。类型扩展Comparable只能以一种方式扩展它。(有些人认为这是一个缺点。)

  2. 您可以为在Ordering不了解它的情况下实现的类型(例如,任何 Java 类型!)。如果还没有扩展现有类型,则无法扩展Comparable它。

于 2017-02-04T23:32:56.090 回答