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