哈希中数组的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找到了这个。

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

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

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

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

为什么数组没有缩进?

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

你可以这样做:

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

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

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