apply
メソッドのパラメーターとして関数を受け取る Object があるとします。
object Wrapper {
def apply(block: TypeA => String) = {
TypeA a = ...
block(a)
}
}
TypeA
アプリケーションのドメイン タイプです。
インライン ブロックを定義すると、TypeA
パラメーターを暗黙的に定義できます。
Wrapper { implicit a => functionThatUseImplicitA() }
しかし、block
パラメータが ではなくFunction1
の場合はどうなるFunction2
でしょうか? 両方のパラメーターを暗黙的に定義するにはどうすればよいですか?
object Wrapper2 {
def apply(block: (TypeA, TypeB) => String) = {
TypeA a = ...
TypeB b = ...
block(a, b)
}
}
これは機能しません:
Wrapper { implicit (a, b) => functionThatUseImplicitAB() }
唯一の回避策は、それらを vals として定義することです。
Wrapper { (a, b) =>
implicit val ia = a
implicit val ib = b
functionThatUseImplicitAB()
}
ありがとう!