我需要Yaml中的string引号吗?
我正在尝试编写一个Rails项目国际化的YAML字典。 我有点困惑,因为在一些文件中,我看到双引号string,有些没有。 有几点需要考虑:
- 例子1 – 所有string都使用双引号;
- 例子2 – 没有string(最后两个除外)使用引号;
- YAML食谱说: 用双引号括起string,可以使用转义来表示ASCII和Unicode字符。 这是否意味着我只有在我想逃避某些angular色时才需要使用双引号? 如果是的话 – 为什么他们在第一个例子中到处都用双引号 – 只是为了统一/风格的原因?
- 例2的最后两行使用
!
– 非特定的标签,而第一个例子的最后两行没有 – 他们都工作。
我的问题是 – 在YAML中使用不同types的引号的规则是什么。 难道可以这样说:
- 一般来说,你不需要报价;
- 如果你想转义字符使用双引号;
- 使用
!
用单引号,当…?!?
谢谢。
在简要回顾了YAML食谱中提到的问题和一些testing后,我的解释是:
- 一般来说,你不需要报价。
- 使用引号强制一个string,例如,如果你的键或值是
10
但你想要它返回一个string,而不是一个修订号,写'10'
或"10"
。 - 如果您的值包含特殊字符(例如
:
,{
,}
,[
,]
,,&
,*
,#
,?
,|
,-
,<
,>
,=
,!
,%
,@
,\
,请使用引号。 - 单引号让你把几乎任何字符放在你的string中,而不会尝试parsing转义码。
'\n'
将作为string\n
返回。 - 双引号分析转义码。
"\n"
将作为换行符返回。 - 感叹号引入了一个方法,例如
!ruby/sym
返回一个Ruby符号。
在我看来,最好的办法是不使用引号,除非你必须使用单引号,除非你特别想处理转义码。
更新
引号(“单引号”或“双引号”)应该包含“是”和“否”,否则将被解释为TrueClass和FalseClass值:
en: yesno: 'yes': 'Yes' 'no': 'No'