我有一个功能
foo 'a -> 'b option
我有一个' a
的数组let data_in: 'a[] = ...
我需要获得' b的数组。所以我有两个问题:
我想做这样的事情:
bar(data: 'a []) : 'b [] =
data |> foo
let result : 'b[] = Array.filter (fun e ->
match e with
| Some(e) -> true
| None -> false)
但我收到bar
预期类型'b
的错误,但获得'b option
。如何修复bar
中的类型声明?
map
+ filter
一个表达式的情况下完成所有这些操作吗?答案 0 :(得分:5)
Array.choose
可以一次性映射+过滤。
这可能是解决您问题的最简单方法。