是否有一种快速简单的方法将整个字符串列表转换为浮点数或整数,并将它们添加到F#中类似于此?
foreach(string s in list)
{
sum += int.Parse(s);
}
Run Code Online (Sandbox Code Playgroud)
GS *_*ica 14
这样的东西应该具有相同的效果:
let sum = list |> Seq.map System.Int32.Parse |> Seq.sum
Run Code Online (Sandbox Code Playgroud)
F#似乎不支持引用方法,int所以我不得不使用System.Int32.
在F#中,类型seq是.NET的别名IEnumerable,因此此代码适用于数组,列表等.
注意使用Parse"无点"样式 - 没有参数的函数可以直接用作期望该类型的另一个函数的参数.在这种情况下Seq.map有这种类型:
('a -> 'b) -> seq<'a> -> seq<'b>
Run Code Online (Sandbox Code Playgroud)
而且由于System.Int32.Parse有型string -> int,Seq.map System.Int32.Parse有型seq<string> -> seq<int>.
Tom*_*cek 14
如果你想瞄准最少数量的字符,那么你可以简化Ganesh发布的解决方案,如下所示:
let sum = list |> Seq.sumBy int
Run Code Online (Sandbox Code Playgroud)
这几乎完全相同 - int函数是一个通用转换,可以将任何东西转换为整数(并且它也适用于字符串).该sumBy函数是的组合map和sum该第一项目的所有元素为数字值,然后相加结果.