给定一种类型
type C = Circle of int | Rectangle of int * int
Run Code Online (Sandbox Code Playgroud)
和一个集合
let l = [ Circle(1); Circle(2); Rectangle(1,2)]
Run Code Online (Sandbox Code Playgroud)
我只想处理圈子
let circles = l |> List.filter(fun x-> match x with
| Circle(l) -> true
| _ -> false)
Run Code Online (Sandbox Code Playgroud)
但我的圈子仍然是C型,所以我做不到
for x in circles do
printf "circle %d" x.??
Run Code Online (Sandbox Code Playgroud)
我要做
for x in circles do
match x with
| Circle(l) -> printf "circle %d" l
| _ -> ())
Run Code Online (Sandbox Code Playgroud)
好像错了..
Jac*_* P. 31
使用List.choose
-就像List.filter
与List.map
集于一身.
let circles =
l |> List.choose(fun x ->
match x with
| Circle l -> Some l
| _ -> None)
for x in circles do
printf "circle %d" x
Run Code Online (Sandbox Code Playgroud)