11

これを行うよりクリーンな方法はありますか?のパターンマッチングをしようとしています

(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 に答える