我有一个像这样的歧视性工会:
type A = |B | C of int*A
我必须像这样进行模式匹配(似乎需要括号):
match x with
| B -> printfn "B"
| C (i,a) -> printfn "%A, %A" i a
有没有办法像这样与活动模式匹配:
match x with
| B -> printfn "B"
| C i a -> printfn "%A, %A" i a
如果不是,F# 怎么会设计成这样与 curried 参数的匹配不起作用,而是强制您使用元组?
编辑:这受到 F# 列表的启发,您可以在其中使用h::t
没有任何元组或类似的东西。源代码是这样的:
type List<'T> =
| ([]) : 'T list
| (::) : Head: 'T * Tail: 'T list -> 'T list