Array.choose for element of tuple



这是我当前的代码:

placeId
|> Sql.getEOByPlace
|> Array.map (fun eo -> (eo, getType eo))  // (Item * ItemType option)
|> Array.filter (fun (i, it) -> it.IsSome)
|> Array.map (fun (i, it) -> (i, it.Value) // (Item * ItemType)

有没有办法简化最后三行代码?我需要类似 Array.choose 的东西,但对于元组的一个元素。

您可以返回(a * b) option而不是a * b option并使用Array.choose

placeId
|> Sql.getEOByPlace
|> Array.choose (fun eo -> (getType eo) |> Option.map (t -> (eo, t)))

最新更新