Ich verstehe nicht, was eine YAML-tag ist
Bekomme ich es auf einer bestimmten Ebene, aber ich habe noch zu sehen, ein Beispiel, das nicht bringen mehr Fragen als Antworten.
http://rhnh.net/2011/01/31/yaml-tutorial
# Set.new([1,2]).to_yaml
--- !ruby/object:Set
hash:
1: true
2: true
Ich, dass wir deklarieren ein Set-tag. Ich verstehe nicht, was die nachfolgenden hash-Zuordnung zu tun hat mit ihm. Sind wir deklarieren ein schema? Kann mir jemand zeigen, ein Beispiel mit mehreren tag-Erklärungen?
Ich gelesen habe, durch die Skillung: http://yaml.org/spec/1.2/spec.html#id2761292
%TAG ! tag:clarkevans.com,2002:
Ist diese Deklaration ein schema? Gibt es etwas anderes, einen parser zu tun hat, um erfolgreich Parsen der Datei? Eine schema-Datei von irgendeiner Art?
http://www.yaml.org/refcard.html
Tag property: # Usually unspecified.
none : Unspecified tag (automatically resolved by application).
'!' : Non-specific tag (by default, "!!map"/"!!seq"/"!!str").
'!foo' : Primary (by convention, means a local "!foo" tag).
'!!foo' : Secondary (by convention, means "tag:yaml.org,2002:foo").
'!h!foo': Requires "%TAG !h! <prefix>" (and then means "<prefix>foo").
'!<foo>': Verbatim tag (always means "foo").
Warum ist es relevant, eine primäre und sekundäre-tag, und warum muss ein Sekundär-tag beziehen sich auf eine URI? Welches problem wird gelöst, indem diese?
Scheine ich zu sehen, eine Menge von "was Sie sind", und nicht "warum sind Sie da", oder "was werden Sie verwendet".
- In deinem ersten Beispiel
# Set.new([1,2]).to_yaml
ist eigentlich ein Kommentar - es ist ein ruby-Anweisung, dass würde Ausgang der YAML darunter.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich weiß nicht viel über YAML, aber ich werde give it a shot:
Tags werden verwendet, um zu bezeichnen Arten. Ein tag wird deklariert, mit
!
wie Sie gesehen haben, von der "refcard" gibt. Die%TAG
Richtlinie ist eine Art, wie deklarieren Sie eine Verknüpfung zu einem tag.Werde ich zeigen, mit PyYaml. PyYaml analysieren können die Sekundär-tag
!!python/object:
als eine tatsächliche python-Objekt. Die Doppel-Ausrufezeichen-ist eine substitution in sich selbst, kurz für!tag:yaml.org,2002:
welcher sich der ganze Ausdruck in!tag:yaml.org,2002:python/object:
. Dieser Ausdruck ist ein wenig unhandlich zu werden, die Eingabe, jedes mal, wenn wir wollen, um ein Objekt zu erstellen, so geben wir ihm einen alias mithilfe der%TAG
Richtlinie:Knoten analysiert werden, indem Sie Ihre Standard-Typ, wenn Sie keine tag-Anmerkungen. Die folgenden sind äquivalent:
Hier ist ein vollständiges Python-Programm mit PyYaml demonstrieren tag Verwendung:
Mehr Informationen finden Sie in der spec
!!
erweitert werden!<tag:yaml.org,2002:>
die im wesentlichentag:yaml.org,2002:
. statt!tag:yaml.org,2002:
. Gleiche für!!python/object
, die erweitert werden, umtag:yaml.org,2002:python/object:
.