如何计算数组的元素和?
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)
缺少扩展函数的参数类型
答案 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))