我在F#中有一个bool [,],我希望得到真实存在的数量。如何在不进入命令式编程的情况下实现这一目标?
这是我目前的解决方案,实际上只是用f#写的c#。
let mutable x = 0
for cell in cells do
if cell = true then x <- x + 1
x
答案 0 :(得分:7)
以这种方式:
let x = cells |> Seq.cast |> Seq.filter id |> Seq.length
它的作用是过滤掉false
个值(请参阅Seq.filter),然后计算剩下的内容。
答案 1 :(得分:6)
一种方法是使用seq
,然后使用Seq.sumBy
cells |> Seq.cast<_> |> Seq.sumBy (function |true -> 1 |false -> 0);;