我正在使用YAML将Ruby哈希写入文件.
File.open(output_file, "w") {|file| file.puts YAML::dump(final)}
Run Code Online (Sandbox Code Playgroud)
哈希包含字符串作为键,浮点数作为值.
当我的字符串只包含字母时,它们会在文件文件中输出:
abc: 1.0
bcd: 1.0
cde: 1.0
Run Code Online (Sandbox Code Playgroud)
当一个字符串以空格开头时,它会这样输出:
! ' ab': 1.0
Run Code Online (Sandbox Code Playgroud)
当我再次读回文件时,一切都还可以,但我想知道为什么会这样,这是什么意思.
我搜索了YAML文档,它说单个感叹号用于表示本地数据类型.
为什么这会在以空格开头的字符串上发生?
它!被称为"非特定标签".它强制YAML引擎将以下项解码为字符串,散列或数组.它基本上禁止将其解释为不同的类型.我不确定为什么引擎会这样标记它们; 它似乎并不需要.也许只是过分热心地试图消除歧义?
编辑:无论哪种方式,它都是不需要的语法:
YAML.dump({' a'=>0})
=> "---\n! ' a': 0\n"
YAML.load("---\n! ' a': 0\n") # with the bang
=> {" a"=>0}
YAML.load("---\n' a': 0\n") # without the bang
=> {" a"=>0}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1937 次 |
| 最近记录: |