如何计算数组的元素和?
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)
Run Code Online (Sandbox Code Playgroud)
缺少扩展函数的参数类型
Tra*_*own 12
当您在函数定义中使用下划线作为占位符时,它只能出现一次(对于每个函数参数位置,也就是说,在这种情况下flatMap
需要a Function1
,因此只有一个).如果需要多次引用参数,则不能使用占位符语法 - 您需要为参数指定名称.
正如其他答案所指出的那样,你可以使用.map { case (x, y) => x + y }
或者使用元组访问器版本,但是值得注意的是,如果你想在中间集合中避免一堆元组分配,你可以编写以下代码:
scala> (a, b).zipped.map(_ + _)
res5: Array[Int] = Array(0, 0, 0, 0, 0)
Run Code Online (Sandbox Code Playgroud)
这zipped
是一个方法,可以在具有a的特殊集合上map
使用Function2
,这意味着创建的唯一元组是该(a, b)
对.在大多数情况下,额外的效率可能并不重要,但事实上你可以Function2
从对中传递而不是函数意味着语法通常也会更好.
归档时间: |
|
查看次数: |
8691 次 |
最近记录: |