2012-06-18 2 views
0

YAML 파서에 버그가있는 것으로 나타났습니다. 예를 들어이 간단한 YAML 파일을 가지고 :루비 YAML 숫자가있는 구문 분석 버그

new account: 
    - FLEETBOSTON 
    - 011001742 

당신이 코드 루비 라인을 사용하여 분석 할 경우

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

내가 뭔가를하고 있습니까 : 그럼

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

나는이 다시 얻을 잘못된? 왜냐하면이 일이 결코 일어나지 않을 것이라고 확신하기 때문입니다.

답변

6

발생합니다. 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 

PEBKAC. :)

귀하의 전화 번호는 숫자이므로 전화 번호로 취급됩니다. 명시 적으로 문자열로 만들려면 따옴표로 묶으십시오. 따라서 YAML은 숫자로 만들려고하지 않습니다.

new account: 
    - FLEETBOSTON 
    - '011001742' 
+0

'의 사용 ='대신'=='코드 서식 (번호 lvalues하지 않기 때문에이 될 수 없습니다) 지정으로 잘못 해석 될 수와 함께. –

+0

@AndrewMarshall : 예, 코드 일 뿐이며 일러스트레이션이 아닙니다. 그러나 나는 그것을 바꿀 것이다. – Amadan

+0

그래, 나는 그것이 수학보다는 수학 평등을 의미한다는 것을 알고있다. 단지 이상하게 보였고 다른 사람들이 혼란스러워하지 않기를 바랐다. 이것 만이 Prolog 질문이라면 ...;)'. –

관련 문제