ruby什么时候解析yaml中的int

Lin*_*lix 1 ruby yaml

我创建了这个示例 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 没有被 ruby​​s yaml-parser 解析为 int,而是被解析为字符串,即"08""09"

我使用的是红宝石3.0.2

spi*_*ann 6

由于前导 . ,00的键被解析为八进制数字。例子:070

00
#=> 0
05 
#=> 5
07 
#=> 7
Run Code Online (Sandbox Code Playgroud)

0809只是无效的八进制数字,因此解析器以字符串表示形式返回这些键。例子:

08
#=> Invalid octal digit (SyntaxError)
09
#=> Invalid octal digit (SyntaxError)
Run Code Online (Sandbox Code Playgroud)