如何通过选择要添加的项来生成数组

fah*_*ash 1 f#

我有以下数组

let evens = [| 
    for key in numbersDictionary.Keys -> 
        match numbersDictionary.[key] % 2
        | 0 -> Some(numbersDictionary.[key])
        | _ -> None |]
Run Code Online (Sandbox Code Playgroud)

我确实有None奇数的选项类型数组.如何调整上述声明所以evens成为int[]代替int option [],没有NoneS'

Car*_*ten 6

这应该工作:

let evens =
  numbersDictionary
  |> Seq.map (fun kvp -> kvp.Value)
  |> Seq.filter (fun v -> v % 2 = 0)
  |> Seq.toArray
Run Code Online (Sandbox Code Playgroud)

更简单:

let evens =
  numbersDictionary.Values
  |> Seq.filter (fun v -> v % 2 = 0)
  |> Seq.toArray
Run Code Online (Sandbox Code Playgroud)

或者更接近你的问题:

let evens =
   [| for v in dict.Values do if v%2=0 then yield v |]
Run Code Online (Sandbox Code Playgroud)