2012-06-18 62 views
0
的錯誤

我遇到了YAML解析器出現的錯誤。就拿這個簡單的YAML文件,例如:ruby​​ YAML解析編號爲

new account: 
    - FLEETBOSTON 
    - 011001742 

如果您在使用這個代碼紅寶石行解析它:

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

然後我得到這個回:

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

我做什麼錯誤?因爲我很確定這絕不會發生。

回答

6

它應該發生。以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' 
+0

在代碼格式中使用'='而不是'=='可能會被錯誤地解釋爲賦值(它不可能是因爲數字不是左值)。 –

+0

@AndrewMarshall:是的,並不意味着代碼,只是一個例證;但我會改變它。 – Amadan

+0

是的,我知道這是爲了數學的平等而不是任務,它看起來很奇怪,不想讓別人感到困惑。如果只有這是一個序言問題...'')'。 –