Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
F# 获取具有特定值的数组元素的索引_F# - Fatal编程技术网

F# 获取具有特定值的数组元素的索引

F# 获取具有特定值的数组元素的索引,f#,F#,假设我有一系列选项,如[| Some 1;Some0;None;None;Some0}] 我将得到具有None值的元素的索引,在这种情况下,正确的答案是[| 2;3 |] 我目前的想法是将数组更改为列表,然后使用递归函数抛出它,但在这种情况下,我需要可变值来计算索引,我不想使用可变值 还有其他解决方案吗这里有另一个解决方案: [|Some 1;Some 0;None;None;Some 0|] |> Array.indexed |> Array.filter (fun

假设我有一系列选项,如
[| Some 1;Some0;None;None;Some0}]
我将得到具有
None
值的元素的索引,在这种情况下,正确的答案是
[| 2;3 |]

我目前的想法是将数组更改为列表,然后使用递归函数抛出它,但在这种情况下,我需要
可变值
来计算索引,我不想使用可变值


还有其他解决方案吗这里有另一个解决方案:

[|Some 1;Some 0;None;None;Some 0|]
    |> Array.indexed
    |> Array.filter (fun (i, x) -> x.IsNone)
    |> Array.map fst
作为一种优化,最后2行可以用单个
|>数组代替。选择(函数(i,None)->一些i | |->None)

下面是使用序列表达式的另一种方法:

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|]

谢谢,我不知道这个索引方法