From: eklerni Date: 2007-09-28T03:04:44+09:00 Subject: [ruby-dev:31877] Re: Symbol.all_symbols eklerniです。 > まつもと ゆきひろです > > In message "Re: [ruby-dev:31854] Symbol.all_symbols" > on Tue, 25 Sep 2007 15:09:58 +0900, eklerni wri > tes: > > |リファレンス編集中に気づいたことについての質問です。 > |Symbol.all_symbolsメソッドの、式展開を含むシンボルリテラル > |の扱いが1.8と1.9で変化しているのですが、これは意図した変更でしょうか。 > > そうですね。1.9では実行されないシンボル式が最適化により削られ > ています。シンボルを印字したり代入したりするとシンボルが作ら > れます。 > > なるほど、最適化の影響ですか。シンボルをなにかに利用すると確かに生成され ることを確認しました。 ありがとうございます。 def number 'mymake_bar' end p Symbol.all_symbols.select{|sym|sym.to_s.include? 'mymake'} :'mymake_foo' re = :"#{number}" p Symbol.all_symbols.select{|sym|sym.to_s.include? 'mymake'} __END__ #=> ruby 1.8.6 (2007-03-13 patchlevel 0) [i386-mswin32] [:mymake_foo] [:mymake_bar, :mymake_foo] #=> ruby 1.9.0 (2007-09-24 patchlevel 0) [i386-mswin32_80] [:mymake_foo] [:mymake_foo, :mymake_bar]