2012-09-22 83 views
1

的內容首次轉讓的課程https://www.coursera.org/course/progfun 我想做到以下幾點斯卡拉添加兩個列表

val l1 = List(1,2,3) 
    val l2 = List(4,5,6) 

    val lSum = l1.someOperation(l2) 
    RES: lSum=List(5,7,9) 

我可以用一個循環實現someOperation,但看起來不是很scalarish,我想知道是否有內置的功能來實現這一點。

+1

你能做到這一點遞歸,它會是簡單和Scala十歲上下。 – Borgleader

回答

6

您可能會壓縮他們在地圖中通常執行加法:

l1.zip(l2).map(x => x._1 + x._2) 
+0

謝謝。這是我正在尋找的。 –

1

這比@ OM-NOM-NOM的代碼可能更Scalaish。雖然Scala是,作爲語言去,還是蠻年輕的,所以實際上還在爭論實際上大約是什麼 Scalaish:

​​
9

除了zip,標準庫還提供zipped這避免了需要解構任何元組:

(l1, l2).zipped.map(_ + _)

+0

這應該是正確的答案,因爲使用壓縮避免了創建元組的中間列表。更多信息請見本頁#11:http://tinyurl.com/scala-snippets – AmigoNico