F#访问lambda中的元组成员

时间:2016-03-10 08:08:51

标签: lambda f#

我有一个类型为groups的{​​{1}},我正在尝试生成DateTime*int*decimal*decimal list list,每个元素都是{{1}内部列表中第四个元素的总和}}。 我的尝试如下,

decimal list

groups假设是groups |> List.map(fun x -> (List.reduce (fun acc elem -> elem + acc )) ,我的问题是如何访问上述lambda中元组的第四个元素?

1 个答案:

答案 0 :(得分:6)

您可以在lambda参数声明中分解元组:fun (_,_,d,_) -> d将返回元组的第3个元素。

您还可以使用List.sumBy代替List.reduce来简化代码。

//sample data
let groups = [
    [(System.DateTime(), 1, 1.5M, 2.5M); (System.DateTime(), 1, 4.1M, 2.5M)]
    [System.DateTime(), 1, 3.2M, 2.5M]
]

groups
|> List.map (List.sumBy (fun (_,_,d,_) -> d))