List.foreachで2つのパラメーター関数を呼び出そうとしていますが、最初のパラメーターはループ用に修正されています。実際、2つのパラメーターの関数を1つのパラメーターの関数にカレーして、1つのパラメーターの関数を返します(List.foldLeftのように)
これは動作しません:
private def mathFunc1(a: Double, b: Double) =
println(a + b)
def eval(v: Double) = {
List(1.0, 2.0, 3.0).foreach(mathFunc1(2.1))
}
これは機能します:
private def mathFunc2(a: Double)(b: Double) =
println(a + b)
def eval(v: Double) = {
List(1.0, 2.0, 3.0).foreach(mathFunc2(2.1))
}
しかし、mathFunc1の署名を変更したくないので、次のようなことをしたいと思います。
private def mathFunc1(a: Double, b: Double) =
println(a + b)
def eval(v: Double) = {
List(1.0, 2.0, 3.0).foreach(CONVERT_TWO_PARAMS_TO_ONE_ONE(mathFunc1)(2.1))
}