您如何使用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
、pipelinedSeq.fold
和pipelinedSeq.sumBy
的答案进行了投票(我最喜欢第三个)
efforts |> Seq.sumBy (fun e -> e.Amount)
也就是说,没有人提到过Seq在提出这个问题后不久,我想起我应该使用Seq而不是List,并得出了与您相同的结论。“成员x.TotalEffort=x.Effort |>Seq.sumBy(乐趣i->i.Amount)”