Piszę mieszanie Ruby do pliku przy użyciu YAML.Dlaczego łańcuchy zaczynają się od spacji przekonwertowanej za pomocą:! "z Ruby/YAML
File.open(output_file, "w") {|file| file.puts YAML::dump(final)}
Hash zawiera ciągi jako klucze i pływa jako wartości.
Kiedy moje struny zawierać tylko litery są wyprowadzane jako takie w Plik:
abc: 1.0
bcd: 1.0
cde: 1.0
Kiedy łańcuch zaczyna się przestrzeń jest podawanych jako takie:
! ' ab': 1.0
Kiedy czytam plik z powrotem ponownie wszystko jest ok, ale chcę wiedzieć, dlaczego tak się dzieje i co to znaczy.
Przeszukałem dokumentację YAML i podano, że pojedynczy wykrzyknik jest używany do reprezentowania lokalnych typów danych.
Dlaczego tak się dzieje w przypadku łańcucha zaczynającego się od spacji?
myślę że potrzebuje ciąg być w cudzysłowie, aby potwierdzić przestrzeń jest częścią łańcucha. Sprawdziłem również specyfikację bardziej i znalazłem w sekcji: "Przykład 7.8. Pojedynczo cytowane klucze niejawne", że: "Wszystkie wiodące i końcowe znaki białe spacje są wykluczone z zawartości.". Nie jestem pewien, ale myślę, że może trzeba użyć! aby zapobiec usunięciu wiodącej białej powierzchni? – Gilles
Początkowe i końcowe białe znaki, do których się odnosi, są przed i po cudzysłowach. Można pokazać, że '!' Jest niepotrzebne przez jego edycję i przeładowanie yaml, które ładuje dokładnie to samo bez '!' –