2013-12-18 14 views
0

任何人都可以解釋爲什麼一些運算符符號不能直接寫成irb中的符號,而當傳遞給ruby解釋器時它運行沒有任何問題? 它看起來像IRB解析表達式作爲未完成,並用星號提示作爲等待繼續輸入的:失敗在解析IRB - 在操作符的未完成表達式?

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

其它符號:%:&:^:/:|:~。我可以傳遞這些符號作爲字符串,即。 test_symbol = :'+'但是,這只是解決可能的錯誤的一種解決方法。還是一個功能?

有人可以對此行爲有所瞭解嗎?

+0

'test_symbol =:+'對我使用ruby 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在使用這樣的符號後確實顯示爲「等待輸入」。

但是,這實際上並不影響eval循環的功能。舉個例子,我嘗試這樣做:

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

因此,儘管它似乎IRB正等着你來完成一個表達式,它seemt正確解析表達式。我無法找到有關此問題的任何錯誤報告。

+0

感謝您的報告!我也無法在ruby-lang.org上找到bug報告,但它似乎在2.0.0中得到修復,或者可能是其他修改的副作用。 –