为什么字符串以空格转换为:! ‘用Ruby / YAML

我正在使用YAML将 Ruby哈希写入文件.
File.open(output_file,"w") {|file| file.puts YAML::dump(final)}

哈希包含字符串作为键,浮点数作为值.

当我的字符串只包含字母时,它们会在文件文件输出

abc: 1.0
bcd: 1.0
cde: 1.0

一个字符串以空格开头时,它将被输出

! ' ab': 1.0

当我再次读回文件时,一切都还可以,但我想知道为什么会这样,这是什么意思.

搜索了YAML文档,它说单个感叹号用于表示本地数据类型.

为什么这会在以空格开头的字符串上发生?

解决方法

! is known as the “non-specific tag”.它强制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}

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...