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()
}
ありがとう!