32 Stimmen

{X mit Wert} in ocaml

Ich sah den folgenden Funktionsaufruf in Beispiel Yacfe :

  Visitor_c.vk_program { Visitor_c.default_visitor_c with
    Visitor_c.kexpr = (fun (k, bigf) exp -> 
      match Ast_c.unwrap_expr exp with
      | Binary(e1, Logical (Eq), (((Constant(Int("0")) as _e2),_t),ii)) -> 

          (match Ast_c.get_onlytype_expr e1 with 
          | Some (qu, (Pointer _,_ii)) -> 

              let idzero = Common.tuple_of_list1 ii in
              idzero.cocci_tag := 
                Ast_cocci.MINUS (Ast_cocci.NoPos, [[null_addon]]), [];

          | _ -> k exp
          )
      | _ -> k exp
    );
  } ast;

Ich kann einen Funktionsaufruf sehen, bei dem record als erstes Argument initialisiert wird, und ast als zweites Argument.

Was ich nicht kenne, ist die Syntax des Formulars:

{Visitor_c.default_visitor_c with Visitor_c.kexpr = some_value;}

Was bedeutet das? Ich weiß, dass ein Datensatz wie folgt initialisiert werden kann {name=value;name=value;...} aber ich bin nicht vertraut mit dem {X with name=value} Können Sie mir sagen, was das bedeutet?

Ich kann nicht finden in der Ocaml-Handbuch nichts über die legale Initialisierung von Datensätzen, außer dem Folgenden:

6.2.3 Aufzeichnungen

Datensatzwerte sind gekennzeichnete Tupel von Werten. Der Datensatzwert geschrieben { feld1 = v1; ; feldn = vn } assoziiert den Wert vi mit dem Datensatz feldi, für i = 1 n. Die aktuelle Implementierung unterstützt Datensätze mit bis zu 222 1 Feldern (4194303 Felder).

Ich würde mich freuen, wenn Sie in Ihrer Antwort einen Verweis auf den entsprechenden Abschnitt im OCaml-Handbuch angeben würden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X