können Sie den gesamten Datensatz entsprechen:
match my_record with
| { first = "something"; } -> do_something
| { second = hd :: tl; third = "something else"; } -> do_something_else
(* ... *)
oder zielen auf spezielle Felder in es mit der Punktnotation:
match my_record.second with
| hd :: tl -> do_something
(* ... *)
Es ist auch möglich, einen Datensatz in einer Funktion mit einer syntaktischen destrukturiert Verknüpfung mit dem Namen Feld punning:
let fun_example { first; third; _ } =
"This is first: "^first^" and this is third: "^third
oder durch Aliasnamen für die Felder bereitstellt:
let fun_example_2 { first = f; third = t; _ } =
"This is first: "^f^" and this is third: "^t
Der Unter ; _
in dem Muster verwendet, um den Compiler zu sagen, es nicht über unvollständige Übereinstimmungen, wenn die #warnings "+9"
Direktive in der Toplevel eingeschaltet sorgen sollte. Es kann abhängig von Ihrem Stil weggelassen werden.
Für weitere Details siehe RWO, dort ist a great chapter on records!
Mögliches Duplikat von [Datensatztyp Mustererkennung in Ocaml] (http://stackoverflow.com/questions/17173690/record-type-pattern-matching-in-ocaml) –