3
這裏是代碼我寫的平均座標內包含一個地圖的價值觀中值:取平均數值包含在地圖
val averaged = Map((2,10) -> List((2.0,11.0), (5.0,8.0)))
//> averaged : scala.collection.immutable.Map[(Int, Int),List[(Double, Double)
//| ]] = Map((2,10) -> List((2.0,11.0), (5.0,8.0)))
averaged.mapValues(m => {
val s1 = m.map(m => m._1).sum
val s2 = m.map(m => m._2).sum
(s1/m.size , s2/m.size)
}) //> res0: scala.collection.immutable.Map[(Int, Int),(Double, Double)] = Map((2,
//| 10) -> (3.5,9.5))
此代碼工作正常,但mapValues
功能需要傳球次數等於長度的名單。使用Scala有沒有更實用的方法來達到同樣的效果?
適合我。我剛更新了完整的代碼;也許你錯過了一些東西。 – dhg 2015-03-02 22:05:49
將解壓縮不會被多次調用,因爲它包含在mapValues函數中,或者是因爲(s1,s2)是解壓縮的val會被調用一次? – 2015-03-02 22:07:43