ruby何时解析yaml中的int

kq0g1dla  于 2022-12-18  发布在  Ruby
关注(0)|答案(1)|浏览(100)

我创建了这个例子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

suzh9iv8

suzh9iv81#

由于0位于前面,因此密钥0007被解析为八进制数字。

00
#=> 0
05 
#=> 5
07 
#=> 7

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

08
#=> Invalid octal digit (SyntaxError)
09
#=> Invalid octal digit (SyntaxError)

相关问题