暗黙的な定義は、型エラーを修正するためにコンパイラがプログラムに挿入できる定義です。たとえば、x + y が型チェックを行わない場合、コンパイラはそれを convert(x) + y に変更する可能性があります。ここで、convert は利用可能な暗黙の変換です。convert が x を + メソッドを持つものに変更すると、この変更によってプログラムが修正され、型チェックが正しく実行されるようになる可能性があります。convert が本当に単純な変換関数である場合は、ソース コードから除外することで明確にすることができます。
基本的implicit
には暗黙的に変換に使用されるため、役立つと思われる例を使用して試しました:
scala> class c{
| implicit def synch(x: String)=x.toInt+20
| def f1(s: String):Int=s
| }
私は何をしていますか:
私は暗黙のうちに String を int に変換し、その数値に 20 を追加しているので、引数として受け取るsynch
キーワードを使用し、その後値を変換して追加する 1 つのメソッドを定義しました。implicit
string
int
20
次のメソッドの場合、引数が is でstring
あり、戻り値の型が is であるInt
ため、暗黙的にその同期メソッドを呼び出します
scala> val aty=new c
aty: c = c@1f4da09
scala> aty.f1("50")
res10: Int = 70