В исходном виде у вас не было генериков. directions
- это Seq[SomeWellKnownType]
, и во время компиляции компилятор ищет Ordering[SomeWellKnownType]
в неявном объеме и находит его.
С другой стороны, в RichSeq[T]
компилятор должен найти неявное Ordering[T]
, где T
- параметр типа. Нет способа сделать это. Вы должны убедиться, что Ordering
будет доступен при создании RichSeq
:
class RichSeq[T](seq: Seq[T])(implicit ev: Ordering[T]) {...
Существует сокращение для этого, особенно если вам просто нужен ev
в неявной области видимости без явной ссылки, как здесь:
class RichSeq[T : Ordering](seq: Seq[T]) {...
Тогда у вас точно такая же проблема в вашем неявном методе, который также является общим, с тем же решением:
implicit def seq2richSeq[T: Ordering](seq: Seq[T]) = new RichSeq[T](seq)
Тогда это должно работать. Неявное преобразование seq2richSeq
сработает, когда упорядочение будет доступно для типа элементов в Seq.