有更清洁的方法吗?我正在尝试进行
的模式匹配 (a' option * (char * nodeType) list ref
我找到的唯一方法是这样做:
match a with
| _, l -> match !l with
| (c, n)::t -> doSomething
没有办法让a
与其他类似的东西相匹配......
match a with
| _, ref (c,n)::t -> doSomething
...或类似的东西?在这个例子中,只是做另一个匹配看起来并不重,但在实际情况下它可能有点......
感谢您的回答。
答案 0 :(得分:12)
ref
类型被定义为具有可变字段的记录:
type 'a ref = {
mutable contents : 'a;
}
这意味着您可以使用以下记录语法对其进行模式匹配:
match a with
| _, { contents = (c,n)::t } -> doSomething
答案 1 :(得分:12)
在OCaml中,ref
秘密地是一个名为contents
的可变字段的记录。
match a with
| _, { contents = (c, n) :: t } -> (* Do something *)