我创建了这个示例 yaml:
---
01:
01:
"01"
02:
"02"
03:
"03"
04:
"04"
05:
"05"
06:
"06"
07:
"07"
08:
"08"
09:
"09"
10:
"10"
11:
"11"
Run Code Online (Sandbox Code Playgroud)
当我读这个文件时,如下所示
require 'yaml'
yml = YAML.load_file(File.join('/home/user', 'test.yml'))
p yml
Run Code Online (Sandbox Code Playgroud)
输出是
{1=>{1=>"01", 2=>"02", 3=>"03", 4=>"04", 5=>"05", 6=>"06", 7=>"07", "08"=>"08", "09"=>"09", 10=>"10", 11=>"11"}}
Run Code Online (Sandbox Code Playgroud)
现在我的问题是:为什么键 1 到 7 被解析为 int,而键 08 和 09 没有被 rubys yaml-parser 解析为 int,而是被解析为字符串,即"08"和"09"?
我使用的是红宝石3.0.2
由于前导 . ,00的键被解析为八进制数字。例子:070
00
#=> 0
05
#=> 5
07
#=> 7
Run Code Online (Sandbox Code Playgroud)
08和09只是无效的八进制数字,因此解析器以字符串表示形式返回这些键。例子:
08
#=> Invalid octal digit (SyntaxError)
09
#=> Invalid octal digit (SyntaxError)
Run Code Online (Sandbox Code Playgroud)