哈希中数组的YAML缩进

时间:2013-06-09 21:41:53

标签: ruby yaml

我认为缩进在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找到了这个。

  

序列中的破折号计为缩进,因此您可以添加   映射内部的序列,不需要空格作为缩进。

2 个答案:

答案 0 :(得分:9)

这样你就可以做到:

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

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

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

答案 1 :(得分:6)

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

require 'yaml'

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

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

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

  

为什么数组没有缩进?

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