0

YAML パーサーのバグと思われるものに遭遇しました。たとえば、次の単純な yaml ファイルを見てください。

new account:
  - FLEETBOSTON
  - 011001742

このルビ行のコードを使用して解析すると、次のようになります。

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

それから私はこれを取り戻します:

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

私は何か間違ったことをしていますか?これは絶対に起こらないと確信しているからです。

4

1 に答える 1

7

それは起こるはずです。で始まる数字0は 8 進数表記です。次の文字が でない限り、xその場合は 16 進数です。

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 

ペブカック。:)

あなたの番号は番号なので、番号として扱われます。明示的に文字列にしたい場合は、引用符で囲み、YAML が数値にしようとしないようにします。

new account:
  - FLEETBOSTON
  - '011001742'
于 2012-06-18T13:06:40.457 に答える