Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
您如何使用IList<&燃气轮机;在F#中?_F#_Sum_Ilist - Fatal编程技术网

您如何使用IList<&燃气轮机;在F#中?

您如何使用IList<&燃气轮机;在F#中?,f#,sum,ilist,F#,Sum,Ilist,我有一个类型列表IList。模型工作包含一个名为金额的浮动。我想返回整个列表的Amount之和,单位为F。如何实现这一点?一个有趣的细节是,您还可以避免使用类型注释。在sepp2k编写的代码中,您需要指定effort值的类型为effort,因为编译器从左到右处理代码(如果不知道类型,调用effort.Amount,它将失败)。您可以使用Pipeline操作符编写此代码: Seq.fold (fun acc (effort: Effort) -> acc + effort.Amount) 0

我有一个类型列表
IList
。模型工作包含一个名为
金额的
浮动
。我想返回整个列表的
Amount
之和,单位为F。如何实现这一点?

一个有趣的细节是,您还可以避免使用类型注释。在sepp2k编写的代码中,您需要指定
effort
值的类型为
effort
,因为编译器从左到右处理代码(如果不知道类型,调用
effort.Amount
,它将失败)。您可以使用Pipeline操作符编写此代码:

Seq.fold (fun acc (effort: Effort) -> acc + effort.Amount) 0.0 efforts
efforts |> Seq.fold (fun acc effort -> acc + effort.Amount) 0.0  

现在,编译器知道
努力
的类型,因为它知道它正在处理
努力
类型为
IList
的集合。这是一个小小的改进,但我认为它相当不错。

Seq.fold
、pipelined
Seq.fold
和pipelined
Seq.sumBy
的答案进行了投票(我最喜欢第三个)

efforts |> Seq.sumBy (fun e -> e.Amount)

也就是说,没有人提到过
Seq在提出这个问题后不久,我想起我应该使用Seq而不是List,并得出了与您相同的结论。“成员x.TotalEffort=x.Effort |>Seq.sumBy(乐趣i->i.Amount)”