11

有更清洁的方法吗?我正在尝试对 a 进行模式匹配

(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

...或类似的东西?在这个例子中,只做另一场比赛看起来并不重,但在实际情况下,它可能有点......

感谢您的回答。

4

2 回答 2

13

ref类型被定义为具有可变字段的记录:

type 'a ref = {
    mutable contents : 'a;
}

这意味着您可以使用如下记录语法对其进行模式匹配:

match a with
| _, { contents = (c,n)::t } -> doSomething
于 2012-04-25T03:59:35.350 回答
13

在 OCaml 中,aref是一个秘密记录,带有一个名为 的可变字段contents

match a with
| _, { contents = (c, n) :: t } -> (* Do something *)
于 2012-04-25T03:59:45.627 回答