implicit
暗黙のパラメータ
implicitとマークされた引数は、その型と一致し、implicitとマークされたオブジェクトが存在すれば自動的に供給される。
object ImplicitTest { class ThisIsImplicitSample(value: Int) { override def toString = { "ThisIsImplicitSample:" + value } } // 暗黙的に供給されるオブジェクト。implicitを記述する implicit val sample = new ThisIsImplicitSample(1) // implicitとマークされた引数を持つメソッド。implicitを記述する。 def methodWithImplicitArg(implicit s: ThisIsImplicitSample) { println("methodWithImplicitArg called:" + s) } def main(args: Array[String]) { methodWithImplicitArg // 暗黙的に供給 methodWithImplicitArg(new ThisIsImplicitSample(2)) // 明示的に供給 } }
この結果は
methodWithImplicitArg called:ThisIsImplicitSample:1 methodWithImplicitArg called:ThisIsImplicitSample:2