歡迎轉載,轉載請註明出處,徽滬一郎。
概要
程式碼這東西,不寫肯定不行,新學Scala不久,將實際遇到的一些問題記錄下來,日後也好查詢。
今天講的是如何計算同一集合中元素兩兩之間的差值,即求開始集合(a,b,c,d)中(b-a,c-b,d-c)
解法
val l1 = 1 to 10 toList
val l2 = l1.tail
l1.zip(l2).map(p=>(p._2 - p._1)
上述程式碼即可求出兩兩差值。程式碼含義稍作解釋:
- tail表示一個集合中除首元素外的剩餘元素,也是一個集合。
- zip將兩個集合組成一個數值對集合,比如原來有兩個集合分別是(a,b,c,d), (1,2,3,4),使用zip之後,形成((a,1),(b,2),(c,3),(d,4))
- map操作中的p._1和p._1表示tuple中的第一個元素和第二個元素
衍生
既然講了首元素和剩餘元素,肯定要講到其對立面。分別引述如下
- head|tail head表示頭元素,tail表示除head之外的剩餘元素集合
- init|last last表示尾元素, init表示除尾元素之外的剩餘元素集合