implicit def arrayToList[A](a: Array[A]) = a.toList
Кажется, работает как ожидалось. Я предполагаю, что уже есть genericArrayOps
в Predef
, который имеет сигнатуру для неявного преобразования из Array[T] -> ArrayOps[T]
, ArrayOps[T]
имеет метод .toList(): List[T]
. Ваш метод имеет подпись Array[T] -> List[T]
, что также делает метод .toList[T]
доступным. Тело просит неявное преобразование с этой подписью. Компилятор не знает, что использование arrayToList
приведет к тому, что этот метод войдет в бесконечный цикл, что приводит к ошибке неоднозначности. Тем не менее, вывод типа возвращаемого значения, похоже, способен обойти эту проблему. Похоже, разрешение последствий не очень хорошо сочетается с выводом типа.
Также стоит отметить, что, поскольку уже существует неявное преобразование, которое даст вам то, что вы хотите по умолчанию, нет необходимости в неявном преобразовании из Array
в List
.