1
我在scala中創建伴侶對象並試圖在class
中嘗試使用object
隱含功能而不導入。但是,無論何時,試圖編譯代碼我得到一個錯誤:type mismatch;
似乎它不能自動導入implictis。以下是我的代碼:Scala:在伴侶對象中使用隱含
object ImplicitTest5 {
implicit def dollarToRupa(dollar: Dollar): Rupa = {
println("calling .... dollarToEuro")
Rupa(dollar.value)
}
implicit def dollarToEuro(dollar: Dollar): Euro = {
println("calling .... dollarToEuro")
Euro(dollar.value)
}
}
case class Dollar(value: Double)
case class Euro(value: Double)
case class Rupa(value: Double)
class ImplicitTest5 {
private val value = "String"
def conversion = {
val euro: Euro = Dollar(3.1)
println(s" ----- $euro")
}
}
當我在我的課堂採用import ImplicitTest5._
,它會編譯並運行良好。根據Programming in Scala, Page: 478它將工作正常,並且不需要定義導入。
在這種情況下,轉換dollarToEuro據說被關聯到 類型元。每次需要從Dollar類型的實例轉換時,編譯器都會找到這樣的關聯轉換 。 無需將轉換單獨導入到您的程序中。
我的樣品出現問題或我的理解有誤導性?
嘿@Yuval,如果我們在本書一看,美元是不是我們的'情況下class',這是簡單的類。 –
@HarmeetSinghTaara無關緊要,無論是「case class」還是「class」,它都會查看它是否有定義的伴侶對象,如果有,請在其中查找隱含對象。它不會在'Dollar'上隱式定義'ImplicitTest5'。 –
嘿@Yuval我明白你的觀點,我的理解是誤導。謝謝你的幫助。 –