Во всяком случае, до сих пор ничего не вышло, и я не слышал, что какая-то работа ведется к этой цели. Вы можете присоединиться к сообществу через его списки рассылки и внести свой вклад в его развитие.

у предложить способ определения нового метода в некотором существующем классе в Scala.

Например, я думаю, чтоasInstanceOf[T] метод имеет слишком длинное имя, я хочу заменить его наas[T].

Прямой подход может быть:

class WrappedAny(val a: Any) {
  def as[T] = a.asInstanceOf[T]
}

implicit def wrappingAny(a: Any): WrappedAny = new WrappedAny(a)

Есть ли более естественный способ с меньшим количеством кода?

Кроме того, странная вещь происходит, когда я пытаюсь это:

scala> class A

defined class A

scala> implicit def toA(x: Any): A = x

toA: (x: Any)A

scala> toA(1)

И консоль зависла. Кажется, чтоtoA(Any) не должен проходить этап проверки типа, и не может, когда он неявный. И помещение всего кода во внешний исходный код может вызвать ту же проблему. Как это случилось? Это ошибка компилятора (версия 2.8.0)?

Ответы на вопрос(3)

Ваш ответ на вопрос