Почему этот код не скомпилирован, но успешно компилируется, когда я раскомментирую указанную строку? (Я использую Scala 2,8 в ночное время). Кажется, что явно вызов string2Wrapper
позволяет использовать его неявно с этой точки.
class A {
import Implicits.string2Wrapper
def foo() {
//string2Wrapper("A") ==> "B" // <-- uncomment
}
def bar() {
"A" ==> "B"
"B" ==> "C"
"C" ==> "D"
}
object Implicits {
implicit def string2Wrapper(s: String) = new Wrapper(s)
class Wrapper(s: String) {
def ==>(s2: String) {}
}
}
}
Изменить: спасибо за ответы до сих пор, в том числе указатель на комментарий Мартина Одерского,
"Неявное преобразование без явного типа результата видимо только в тексте следуя собственному определению. Таким образом, мы избегаем циклических ошибок ссылки.
Мне все равно было бы интересно узнать 1), какова опасность "циклических эталонных ошибок"?, и 2) Почему явный вызов имеет какое-то значение?