我创建了这个例子yaml:
---
01:
01:
"01"
02:
"02"
03:
"03"
04:
"04"
05:
"05"
06:
"06"
07:
"07"
08:
"08"
09:
"09"
10:
"10"
11:
"11"
当我像下面这样读这个文件时
require 'yaml'
yml = YAML.load_file(File.join('/home/user', 'test.yml'))
p yml
输出为
{1=>{1=>"01", 2=>"02", 3=>"03", 4=>"04", 5=>"05", 6=>"06", 7=>"07", "08"=>"08", "09"=>"09", 10=>"10", 11=>"11"}}
型
现在我的问题是:为什么rubys yaml-parser将键1到7解析为int,而键08和09没有解析为int,而是解析为string,即分别为"08"
和"09"
?
我使用的是ruby 3.0.2
1条答案
按热度按时间suzh9iv81#
由于
0
位于前面,因此密钥00
到07
被解析为八进制数字。08
和09
只是无效的八进制数字,因此解析器以字符串表示返回这些键。