Was ist ein komplexer Zuordnungsschlüssel in YAML?

9

Auf den YAML Spezifikationen gibt es einen Absatz 2.11 über das Fragezeichen:

  

Ein Fragezeichen und Leerzeichen ("?") zeigen einen komplexen Zuordnungsschlüssel an. Innerhalb einer Blockauflistung können Schlüssel: Wert-Paare unmittelbar nach dem Bindestrich, Doppelpunkt oder Fragezeichen beginnen.

Dieses Beispiel ist gegeben:

%Vor%

Dieses andere Beispiel kann auch nicht in XML konvertiert werden:

%Vor%

Leider verstehe ich nicht, was es bedeutet. Ich habe versucht, dies mit codebeautify in XML zu konvertieren, aber ich bekomme einen Fehler.

Meine Frage ist also:

Was macht das Fragezeichen?

    
nowox 29.11.2015, 19:53
quelle

1 Antwort

24

Die Spezifikation ist nicht sehr klar, aber nach ein bisschen Kopfkratzen habe ich es herausgefunden. YAML verfügt über zwei Arten von Blockzuordnungsschlüsseln: implizit und explizit. Der implizite Stil ist die Art, mit der Sie vertraut sind:

%Vor%

Wenn wir dieses YAML in Ruby laden (zum Beispiel), erhalten wir folgendes Ergebnis:

%Vor%

Aber wir können auch expliziten Stil verwenden, um dasselbe auszudrücken:

%Vor%

Mit anderen Worten, eine Zeile, die mit ? beginnt, zeigt einen Schlüssel an und eine Zeile, die mit : beginnt, zeigt einen Wert an.

Was nutzt das? Nun können wir jede YAML-Struktur als Zuordnungsschlüssel verwenden. Möchten Sie eine Sequenz als Zuordnungsschlüssel verwenden? Sie können! Möchten Sie ein Mapping als Mapping-Schlüssel verwenden? Siehe:

%Vor%

In Ruby würde dies den folgenden entzückenden Hash ergeben:

%Vor%

Oh, und das Beispiel "Detroit Tigers" sieht so aus, wenn Ruby es analysiert:

%Vor%     
Jordan Running 30.11.2015, 23:00
quelle

Tags und Links