あらゆる言語で物事を確実かつ明確に解析することは困難です。これは、予約語を使い始めるときに特に当てはまります。そして、irb
それを超えて、パーサーの上にインタラクティブなモデルを提供する必要がありますが、これはさらに困難です。個人的には、このような場合を心配することは、言語のユーザーとしても、保守者としても、それほど価値があるとは思いません。私の考えでは、何が機能するかを単純に理解し、可能であればこれらの状況に陥らないようにする方がよいでしょう。
の外にあるプレーンなRubyでも同様の動作を見ることができますirb
。例えば:
puts({if: true}) # no problem, behaves as expected in Ruby 1.9.3.
puts {if: true} # raises a syntax error in Ruby 1.9.3
あなたの質問に答えるには、それは「予想される動作、バグ、または制限」ですか、無視irb
してプレーンなRubyと比較する必要があります。これを行うと、正常に機能します。それはそれがirb
バグでなければならないことを意味します。
しかし、解決することは可能ですか、それとも価値がありますか?irb
@coreywardは、ほとんどの場合、。に遭遇したときに実行を遅らせる必要があるという彼のコメントの良い点を示していif
ます。確実に知るためにはさらに調べる必要がありますが、このようなすべてのケースを明確に解釈できるとは限りません。
私のアドバイス:可能であればこの構成を完全に避け、回避できる場合はラベルに予約語を使用しないでください!
これは、プレーンなRuby(MRIなど)で実行できるファイルです。{:if=>true}
それが機能することを確認するために出力を見る必要があります。
{if: true}
foo = {if: true}
# if MRI is working, should be able to execute this file without trouble.
p foo