scala でコンパニオン オブジェクトを作成し、インポートせずobject
に暗黙の関数を使用しようとしています。class
しかし、コードをコンパイルしようとすると、エラーが発生しますtype mismatch;
。暗黙的に自動的にインポートできないようです。以下は私のコードです:
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 に関連付けられていると言われています。コンパイラは、Dollar 型のインスタンスから変換する必要があるたびに、そのような関連付けられた変換を見つけます。変換をプログラムに個別にインポートする必要はありません。
私のサンプルで何か問題が発生していますか、それとも私の理解が誤解を招いていますか?