計算列表中所有元素的總和
要計算數字列表的術語(float,int 或 big integer 型別)的總和,最好使用 List.sum。在其他情況下,List.fold 是最適合計算這樣的總和的函式。
- 複數之和
在這個例子中,我們宣告一個複數列表,我們計算列表中所有項的總和。
在程式開始時,新增對 System.Numerics 的引用
開啟 System.Numerics
為了計算總和,我們將累加器初始化為複數 0。
let clist = [new Complex(1.0, 52.0); new Complex(2.0, -2.0); new Complex(0.0, 1.0)]
let sum = List.fold (+) (new Complex(0.0, 0.0)) clist
結果:
(3, 51)
- 聯合型別的數量總和
假設一個列表由 union(float 或 int)型別的陣列成,並且想要計算這些數字的總和。
在以下數字型別之前宣告:
type number =
| Float of float
| Int of int
計算列表型別編號的總和:
let list = [Float(1.3); Int(2); Float(10.2)]
let sum = List.fold (
fun acc elem ->
match elem with
| Float(elem) -> acc + elem
| Int(elem) -> acc + float(elem)
) 0.0 list
結果:
13.5
函式的第一個引數(表示累加器)的型別為 float,第二個引數(表示列表中的專案的型別為 number)。但是在我們新增之前,當 elem 是 Int 型別時,我們需要使用模式匹配並強制轉換為 float 型別。