【发布时间】:2017-05-01 00:42:24
【问题描述】:
我正在尝试使用 map 和 reduce 函数计算两个向量之间的向量积。
让我们看看 Scala 的 REPL 中发生了什么:
首先我定义了两个长度相同的向量
scala> val v1 = Array(1,4,5,2)
v1: Array[Int] = Array(1, 4, 5, 2)
scala> val v2 = Array (3,5,1,5)
v2: Array[Int] = Array(3, 5, 1, 5)
现在我使用 zip 函数创建一个新数组 vecZip
scala> val vecZip = v1 zip v2
vecZip: Array[(Int, Int)] = Array((1,3), (4,5), (5,1), (2,5))
现在我想应用 reduce 方法 (做每个元组的乘积)这个数组的每个元素。 我是这么想的:
val vecToSum = vecZip.map(x=>(List(x).reduce(_*_)))
我想得到一个列表 (vecToSum),在其中应用 reduce 方法来计算总结果。但是我收到此错误:
scala> val vecToSum = vecZip.map(x=>(List(x).reduce(_*_)))
<console>:10: error: value * is not a member of (Int, Int)
val vecToSum = vecZip.map(x=>(List(x).reduce(_*_)))
^
【问题讨论】:
标签: scala dictionary vector reduce