0
我读隐式转换的斯卡拉documentation,并决定尝试一下:理解隐式转换
object Main extends App {
val test = TestConversion(100)
test.its
}
class Test[T](val t : T) {
def its = println(t)
}
object Test {
def apply[T](t: T): Test[T] = new Test(t)
}
class TestConversion(v : Int) {
val value = v
}
object TestConversion{
implicit def implicitConversionTest2Int(ict : TestConversion): Test[Int] = Test(ict.value)
def apply(v : Int) = new TestConversion(v)
}
,因为它是说:
要定义自己的隐式转换,你必须先导入
scala.language.implicitConversions
(或者用-language:implicitConversions
调用编译器)。该功能必须明确启用,因为如果不加选择地使用该功能有缺陷。
我在IntelliJ和在线IdeOne上都试过,我没有添加任何特殊的东西来编译它。
它带来了什么隐患?为什么它没有任何进口?
这是一些你正在阅读的旧东西。您不必导入任何内容以使用隐式转换。你可能不得不添加编译器标志,但否则它会给你编译时*警告*。 – sebszyller
@sebszyller但他们谈论什么陷阱? – user3663882
当你有很多暗示时,很难追踪它们并导致代码的原因。这就是为什么通配符导入如果不谨慎谨慎地如此危险的原因之一。 – sebszyller