考虑我有一系列选项,例如[|Some 1;Some0;None;None;Some0|]
并且我将获得具有None
值的元素的索引,在这种情况下,正确的答案将是[|2;3|]
。
我目前的想法是将数组更改为列表,然后使用递归函数抛出它但在这种情况下我需要mutable value
来计算索引,我不想使用mutable?
还有其他解决方案
答案 0 :(得分:5)
这是另一个解决方案:
[|Some 1;Some 0;None;None;Some 0|]
|> Array.indexed
|> Array.filter (fun (i, x) -> x.IsNone)
|> Array.map fst
这是使用序列表达式的另一种方式:
let x = [|Some 1;Some 0;None;None;Some 0|]
[|for i = 0 to x.Length-1 do
if x.[i].IsNone then yield i|]