我认为缩进在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找到了这个。
序列中的破折号计为缩进,因此您可以添加 映射内部的序列,不需要空格作为缩进。
答案 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,请解释如何。
为什么数组没有缩进?
在连字符之前不需要缩进,并且不添加任何缩进更简单。