1
我有一個簡單的問題,因爲我是F#新手我似乎無法弄清楚如何做到這一點。我有一個元組列表:F#中的初始狀態List.scan
let l = [ (a, 2); (b, 3); (c, 2); (d, 6) ]
,我想變成這樣:
let r = [ (a, 2); (b, 5); (c, 7); (d, 13) ]
這只是增加了在每個元組的第二個元素的值:2 + 3 + 2 + 6
。對象a
,b
,c
和d
是我只想保留的複雜對象。
我以爲我應該用List.scan
這個。它需要一個列表,通過計算線程累加器並返回一個列表:
let r = l |> List.scan (fun (_, s) (o, i) -> (o, s + i)) (??, 0) |> List.tail
但是我不知道要填什麼問號。除了0
之外,我對初始狀態不感興趣。我不想指定第一個元組元素的某個「空」實例。
還是有一個更簡單的方法呢?
這就是我一直在尋找一種簡單的解決方案。謝謝。我以前沒有遇到||>運算符,但我想它只是將兩個操作數輸入到表達式中? – 2010-08-31 08:31:54
是的,它是雙管道運算符,定義如下:let(||>)(a,b)f = f a b – desco 2010-08-31 08:35:23