Array.choose用于元组的元素

时间:2018-03-05 10:27:30

标签: f#

这是我目前的代码:

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这样的东西,但需要元组的一个元素。

1 个答案:

答案 0 :(得分:5)

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

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