Scala中数组的元素总和

时间:2016-01-28 15:00:36

标签: arrays scala

如何计算数组的元素和?

val a = new Array[Int](5)
val b = new Array[Int](5)
// assign values
// desired output: Array -> [a(0)+b(0), a(1)+b(1), a(2)+b(2), a(3)+b(3), a(4)+b(4)]

a.zip(b).flatMap(_._1+_._2)
  

缺少扩展函数的参数类型

3 个答案:

答案 0 :(得分:12)

尝试:

a.zip(b).map { case (x, y) => x + y }

答案 1 :(得分:12)

当你在函数定义中使用下划线作为占位符时,它只能出现一次(对于每个函数参数位置,也就是说,在这种情况下flatMap需要Function1,所以& #39;只有一个)。如果您需要多次引用参数,则无法使用占位符语法 - 您需要为参数指定名称。

正如其他答案所指出的那样,您可以使用.map { case (x, y) => x + y }或元组访问器版本,但同样值得注意的是,如果您想在中间集合中避免一堆元组分配,那么可写下列内容:

scala> (a, b).zipped.map(_ + _)
res5: Array[Int] = Array(0, 0, 0, 0, 0)

此处zipped是一种方法,可用于具有map的特殊Function2的集合对,这意味着创建的唯一元组是{{一对。在大多数情况下,额外的效率可能并不重要,但事实上你可以从对中传递(a, b)而不是函数意味着语法通常也会更好。

答案 2 :(得分:-1)

// one D Array    
val x = Array(1, 2, 3, 40, 55)    
val x1 = Array(1, 2, 3, 40, 55)    
x.indices.map(i=>x(i)+ x(i) )  

// TWo D Array    
val x1= Array((3,5), (5,7))    
val x = Array((1,2), (3,4))    
x.indices.map(i=>( x(i)._1 + x1(i)._1, x(i)._2 + x1(i)._2))