このスニペットで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