计算列表中所有元素的总和
要计算数字列表的术语(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 类型。