从数组中指定的索引位置减去元素

3

我是一个函数式编程和Scala的初学者。我有一个包含Double数字的数组数组。我想要减去元素(基本上是两个数组,请参考示例),但我找不到在线上如何做这个操作。

例如,考虑以下内容:

val instance = Array(Array(2.1, 3.4, 5.6), 
                  Array(4.4, 7.8, 6.7))

我想要从 2.1 减去 4.43.4 减去 7.85.6 减去 6.7

在Scala中是否可以实现这个功能?

如果这个问题看起来非常基础,那么请谅解,但任何指导都将不胜感激。感谢您的时间。

1个回答

5
你可以使用`.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 函数在这里接收一个由两个参数组成的元组,而不是仅仅两个参数。


“substr”?大多数人知道它是子字符串! - The Archetypal Paul
同样的x86汇编指令怎么样,还是与“潜艇”有关? :) - dk14

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接