Почему 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 ответ

Решение
  1. Ты можешь использовать msort с несколькими Orderings для данного типа. Тип расширения Comparable можно только расширить его одним способом. (Некоторые люди считают это недостатком.)

  2. Вы можете предоставить Ordering для типа, который был реализован без знания об этом (например, любой тип Java!). Вы не можете расширить существующий тип Comparable если это еще не

Другие вопросы по тегам