0

我遇到了似乎是 YAML 解析器的错误。以这个简单的 yaml 文件为例:

new account:
  - FLEETBOSTON
  - 011001742

如果您使用此 ruby​​ 代码行解析它:

INPUT_DATA = YAML.load_file("test.yml")

然后我得到这个:

{"new account"=>["FLEETBOSTON", 2360290]}

难道我做错了什么?因为我很确定这永远不会发生。

4

1 回答 1

7

它应该发生。0以八进制开头的数字。除非下一个字符是x,在这种情况下它们是十六进制的。

07 == 7
010 == 8
011 == 9

0x9 == 9
0xA == 10
0xF == 15
0x10 == 16
0x11 == 17

进入irb并输入011001742.

1.9.2-p290 :001 > 011001742
 => 2360290 

PEBKAC。:)

你的号码是一个数字,所以它被视为一个数字。如果您想明确地将其设为字符串,请将其括在引号中,这样 YAML 就不会尝试将其设为数字​​。

new account:
  - FLEETBOSTON
  - '011001742'
于 2012-06-18T13:06:40.457 回答