このスニペットでfは、 は 2 つのパラメーターを取りDouble、 を返す関数Doubleです。fタイプ の引数を 1 つ渡して呼び出そうとしていますTuple2[Double,Double]。f最初にのタイプを変更することで、これを修正できます。
object TestObject {
def map(f: ((Double, Double)) => Double, x2: Array[Double]) = {
val y = x2.zip( x2 )
val z = y.map(f)
z
}
}
より明確に宣言することもできますf: Tuple2[Double, Double] => Double(これは完全に同等です)。
逆に、次のように呼び出しを変更できます。
object TestObject {
def map(f: (Double, Double) => Double, x2: Array[Double]) = {
val y = x2.zip( x2 )
val z = y.map(f.tupled)
z
}
}
tupled(Double, Double) => Double関数を関数に自動的に変換しますTuple2[Double, Double] => Double。ただし、変換は呼び出しごとに行われることに注意してください。TestObject.map