35

我认为缩进在 YAML 中很重要。

我测试了以下内容irb

> puts({1=>[1,2,3]}.to_yaml)
--- 
1: 
- 1
- 2
- 3
 => nil 

我期待这样的事情:

> puts({1=>[1,2,3]}.to_yaml)
--- 
1: 
  - 1
  - 2
  - 3
 => nil 

为什么数组没有缩进?

我在http://www.yaml.org/YAML_for_ruby.html#collections找到了这个。

序列中的破折号算作缩进,因此您可以在映射内添加序列,而无需空格作为缩进。

4

2 回答 2

22

据我所知,这两种方式都是有效的:

require 'yaml'

YAML.load(%q{--- 
1:
- 1
- 2
- 3
})
# => {1=>[1, 2, 3]}

YAML.load(%q{--- 
1:
  - 1
  - 2
  - 3
})
# => {1=>[1, 2, 3]}

目前尚不清楚为什么您认为连字符前应该有空格。如果您认为这违反了规范,请解释如何。

为什么数组没有缩进?

连字符前不需要缩进,不添加任何缩进更简单。

于 2013-06-09T22:54:54.747 回答
13

这样你就可以做到:

1: 
- 2: 3
  4: 5
- 6: 7
  8: 9
- 10
=> {1 => [{2 => 3, 4 => 5}, {6 => 7, 8 => 9}, 10]}

基本上,破折号分隔对象,缩进表示键值对的“值”。

这是我能做的最好的;我还没有设法找到语法的这个或那个方面背后的任何原因。

于 2013-06-09T22:21:41.677 回答