F#Bool列表检查列表中的1个元素是否为true

时间:2016-10-04 16:18:55

标签: list f#

我有一个布尔列表,我想检查列表中的1个元素是否为真。我的程序的工作方式是每当创建一个布尔列表时,它只有一个真值或者根本没有。

我有什么想法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:4)

您可以使用List.contains查看列表中是否有真值:

let containsTrue = theBoolList |> List.contains true

如果您需要检查正好一个真值,您可以在列表上fold来计算它们:

let fn count item = if item then (count + 1) else count
let numberOfTrue = theBoolList |> List.fold fn 0

let onlyOneTrue = numberOfTrue = 1