Насколько я понимаю, неявные преобразования могут привести к потенциально трудному пониманию кода или кода, страдающего от других проблем (возможно, даже ошибок?), поэтому они требуют явного включения для использования в коде без получения предупреждений.
Однако, учитывая, что неявные преобразования в большой части (если не в большинстве случаев) используются для обертывания объекта с объектом другого типа, а также подразумеваемые классы - я бы оценил, что вы исправляете меня, если я неправильно, почему первые требуют импорта scala.language.implicitConversions
, но последние не делают?
object Main extends App {
implicit class StringFoo(x: String) {
def fooWithImplicitClass(): Unit =
println("foo with implicit class")
}
// => silence.
"asd".fooWithImplicitClass()
/************************/
class Foo(x: String) {
def fooWithImplicitDef(): Unit =
println("foo with implicit def")
}
implicit def string2Foo(x: String) = new Foo(x)
// => warning: implicit conversion method string2Foo should be enabled
"asd".fooWithImplicitDef()
}