gpt4 book ai didi

syntax - YAML:YAML 中的字符串需要引号吗?

转载 作者:行者123 更新时间:2023-12-03 03:57:42 30 4
gpt4 key购买 nike

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

  • example 1 - 所有字符串都使用双引号;
  • example 2 - 没有字符串(最后两个除外)使用引号;
  • YAML cookbook说:将字符串括在双引号中允许您使用转义来表示 ASCII 和 Unicode 字符。这是否意味着仅当我想要转义某些字符时才需要使用双引号?如果是的话 - 为什么他们在第一个示例中到处使用双引号 - 只是为了统一/风格原因?
  • 示例 2 的最后两行使用 ! - 非特定标记,而第一个示例的最后两行则没有 - 并且它们都有效。

我的问题是:在 YAML 中使用不同类型的引号的规则是什么?

是否可以这样说:

  • 一般来说,您不需要引号;
  • 如果要转义字符,请使用双引号;
  • 使用 ! 带单引号,当... ?!?

最佳答案

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

  • 一般来说,您不需要引号。
  • 使用引号强制字符串,例如如果您的键或值是10,但您希望它返回字符串而不是 Fixnum,请写入'10'"10"
  • 如果您的值包含特殊字符,请使用引号(例如:{}[],&*#, ?|-<>=!%@,“1045 67915”)。
  • 单引号允许您在字符串中放置几乎任何字符,并且不会尝试解析转义码。 \将作为字符串'\n'返回。
  • 双引号解析转义码。 \n将作为换行符返回。
  • 感叹号引入了一种方法,例如"\n"返回 Ruby 符号。

在我看来,最好的方法是除非必须,否则不要使用引号,然后使用单引号,除非您特别想要处理转义码。

更新

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

en:
yesno:
'yes': 'Yes'
'no': 'No'

关于syntax - YAML:YAML 中的字符串需要引号吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19109912/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com