我想要使用地圖和減少功能來計算兩個向量之間的向量乘積。向量產品使用地圖和減少斯卡拉
讓我們看看Scala中的REPL會發生什麼:
首先我定義2個向量與相同長度的
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)
現在我創建一個使用新的陣列vecZip zip函數
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),其中應用減少方法計算總成績。不過,我得到這個錯誤:
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(_*_)))
^
我得到這個錯誤: 斯卡拉> VAL vecToSum = vecZip.map(X => x_.1 * X_。2):1:錯誤:')'預期但發現雙字面值。 val vecToSum = vecZip.map(x => x_.1 * x_.2) ^ –
Pierfrancesco
你有一個錯字:)它應該是'x._1'而不是'x_.1'。 –
非常感謝! – Pierfrancesco