YAML spec明确指出:
映射使用冒号和空格(“:”)来标记每个键:值对。
所以这是合法的:
foo: bar
但是,这不是:
foo:bar
我看到网上很多人都在争论这个空间。我认为他们有一个观点。我自己被它烧了好几次。
为什么空间是强制性的?它背后的设计考虑是什么?
答案 0 :(得分:12)
很容易错过,因为该规范使用了仅突出显示内部链接的最后一个字符的奇怪惯例,但您引用的部分中的“: ”
实际上是一个链接{{3}它回答了你的问题:
通常,YAML坚持使用空格将“:”映射值指示符与值分开。这种限制的好处是“:”字符可以在普通标量中使用,只要它后面没有空格。这允许不带引号的URL和时间戳。它也是混淆的潜在来源,因为“a:1”是一个普通的标量,而不是一个关键:价值对。
因此,您可以在不需要任何引用的情况下编写此类列表:
useful_values:
- 2:30
- http://example.com
- localhost:8080
如果空格是可选的,这可能最终变得模棱两可,并被解释为一组键值对。
旁白:以下是JS的一小段内容,使该文档上的链接格式化变得毫无用处。
document.styleSheets[0].insertRule('a[href^="#"] { color: #00A !important; text-decoration: underline !important; background: none !important; }', 0);