你可以使用`.zip`方法:
.zip
scala> instance(1).zip(instance(0)).map{ case (a,b) => a - b}
res3: Array[Double] = Array(2.3000000000000003, 4.4, 1.1000000000000005)
instance(1).zip(instance(0))
会从你的数组中对应的成对元素生成一个元组数组
Array((2.1,4.4), (3.4,7.8), (5.6,6.7))
。
.map{ case (a,b) => a - b}
或
.map(x => x._1 - x._2)
会对每个元组进行减法运算。
我建议使用元组而不是顶级数组。
val instance = (Array(2.1, 3.4, 5.6), Array(4.4, 7.8, 6.7))
现在,通过额外的定义,它看起来好多了。
scala> val (a,b) = instance
a: Array[Double] = Array(2.1, 3.4, 5.6)
b: Array[Double] = Array(4.4, 7.8, 6.7)
scala> val sub = (_: Double) - (_: Double) //defined it as function, not method
sub: (Double, Double) => Double = <function2>
scala> a zip b map sub.tupled
res20: Array[Double] = Array(2.3000000000000003, 4.4, 1.1000000000000005)
*sub.tupled
允许 sub
函数在这里接收一个由两个参数组成的元组,而不是仅仅两个参数。