我需要Yaml中的字符串引号吗?

我正在尝试为Rails项目的国际化编写一本YAML词典。 我有点困惑,因为在某些文件中,我看到双引号中的字符串,有些文件中没有。 需要考虑的几点:

  • 示例1 - 所有字符串都使用双引号;
  • 例子2 - 没有字符串(除了最后两个)使用引号;
  • YAML食谱说:用双引号括起字符串可以让你使用转义来表示ASCII和Unicode字符。 这是否意味着只有当我想逃避某些角色时,我需要使用双引号? 如果是的话 - 为什么他们在第一个例子中到处都使用双引号 - 只是为了统一/文体的原因?
  • 例2的最后两行使用! - 非特定标记,而第一个示例的最后两行不 - 它们都起作用。
  • 我的问题是 - 在YAML中使用不同类型的引号的规则是什么。 难道可以这样说:

  • 一般来说,你不需要引号;
  • 如果你想转义字符使用双引号;
  • 使用! 用单引号,当...?!?
  • 谢谢。


    在简要回顾了问题中引用的YAML食谱和一些测试后,我的解释是:

  • 一般来说,你不需要报价。
  • 使用引号强制字符串,例如,如果您的键或值是10 ,但你希望它返回一个字符串,而不是一个Fixnum,写'10'"10"
  • 使用引号如果值包含特殊字符(例如:{}[],&*#?|- <>=!%@ )。
  • 单引号可让您将几乎任何字符放入字符串中,而不会尝试解析转义码。 'n'将作为字符串n返回。
  • 双引号分析转义码。 "n"将作为换行符返回。
  • 感叹号引入了一个方法,例如!ruby/sym返回一个Ruby符号。
  • 在我看来,最好的方法是不使用引号,除非你必须使用引号,然后使用单引号,除非你特别想处理转义码。

    更新

    “是”和“否”应该用引号(单或双)括起来,否则它们将被解释为TrueClass和FalseClass值:

    en:
      yesno:
        'yes': 'Yes'
        'no': 'No'
    
    链接地址: http://www.djcxy.com/p/57325.html

    上一篇: Do I need quotes for strings in Yaml?

    下一篇: Will copy