Por que implicitConversions é necessário para defs implícitos, mas não para classes?
Tanto quanto eu entendo, conversões implícitas podem resultar em potencialmente difícil entender o código ou código sofrendo de outros problemas (talvez até bugs?), É por isso que exigem habilitação explícita para ser usado no código sem receber avisos.
No entanto, dado que as conversões implícitas são em grande parte (se não a maior parte do tempo) usadas para envolver um objeto com um objeto de outro tipo, e assim são as classes implícitas - agradeço que você me corrija se eu estiver errado -, por que os primeiros exigem a importação descala.language.implicitConversions
mas o último não?
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()
}