[ruby-dev:31877] Re: Symbol.all_symbols

From: eklerni <eklerni@...>
Date: 2007-09-27 18:04:44 UTC
List: ruby-dev #31877
eklerniです。
> まつもと ゆきひろです
>
> In message "Re: [ruby-dev:31854] Symbol.all_symbols"
>     on Tue, 25 Sep 2007 15:09:58 +0900, eklerni <eklerni@for.mail-box.ne.jp> 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]

In This Thread

Prev Next