Почему Scala предпочитает неявные параметры расширению черты?
API упорядочения Scala использует неявные объекты. например:
def msort[T](xs: List[T])(implicit ord: Ordering) = { ...}
Java использует Comparable интерфейс для той же цели.
public static <T extends Comparable<? super T>> void sort(List<T> list) { ... }
Почему Scala предпочитает неявные типы расширению черты? Каковы преимущества неявных параметров?
1 ответ
Решение
Ты можешь использовать
msort
с несколькимиOrdering
s для данного типа. Тип расширенияComparable
можно только расширить его одним способом. (Некоторые люди считают это недостатком.)Вы можете предоставить
Ordering
для типа, который был реализован без знания об этом (например, любой тип Java!). Вы не можете расширить существующий типComparable
если это еще не