2013-12-18 1 views
0

아무도 왜 연산자 기호가 irb에서 기호로 직접 쓰지 않을 수 있는지 설명 할 수 있습니까? 반면 루비 인터프리터로 넘어 가면 문제없이 실행됩니다. IRB는 미완성으로 식을 구문 분석하고 입력의 계속 대기로 별표 (*)로 묻는 것 같습니다 : 구문 분석에 실패IRB - 연산자 기호에서 미완성 표현?

irb> test_symbol = :+ 
irb* ^C 
irb> test_symbol = :- 
irb* ^C 
irb> test_symbol = :* 
=> :* 
irb> test_symbol = :< 
=> :< 

다른 기호 :%, :&, :^, :/, :|, :~이다. I 그 기호를 문자열로 전달합니다. test_symbol = :'+' 그러나 이것은 가능한 버그에 대한 해결 방법 일뿐입니다. 아니면 기능?

누군가가이 문제에 약간의 불만을 제기 할 수 있습니까?

+0

'test_symbol = : +'루비 2.0.0-p247 및 irb 0.9.6을 사용하여 저에게 잘 작동합니다. 'irb '의 어떤 버전을 사용하고 있습니까? – Zajn

+0

@Zajn 1.9.3-p484. 2.0.0-p353에서 작동하는지 확인할 수 있습니다. 기존 bugreport에 대한 모든 링크? –

답변

1

내 컴퓨터에 1.9.3dev을 설치했으며 그와 같은 기호를 사용하여 irb이 "입력 대기 중"인 것으로 확인 될 수 있습니다.

그러나 이것은 실제로 평가 루프가 작동하는 방식에는 영향을 미치지 않습니다. 이 IRB는 식을 마칠 때까지, 올바르게 표현을 구문 분석 seemt 않습니다 기다리는 것 같다 동안 그래서

irb(main):001:0> test_symbol = :+ 
irb(main):002:0* 2.send test_symbol, 1 
=> 3 

: 예를 들어, 나는 이것을 시도했다. 이 문제와 관련된 버그 보고서를 찾을 수 없습니다.

+0

보고서 주셔서 감사합니다! ruby-lang.org에서 버그 리포트를 찾을 수는 없지만 2.0.0으로 수정되거나 다른 변경 사항의 부작용이 될 수 있습니다. –