From: okkez Date: 2009-01-29T16:52:30+09:00 Subject: [ruby-dev:37853] Re: 1.9.1-rc2のNEWSの内容 okkez です。 自分も調べている最中です。 わかる部分だけコメントします。 # ほとんどわからない。。。 2009/01/29 16:36 akira yamada / やまだあきら : > 1.9.1-rc2のNEWSの内容についてのコメントと少し質問です。 > (snip) > > to_splatメソッドはなさそうです(r14063で削除?) > >> o New semantics for constant definition in instance_eval >> or in module_eval. > > (よくわかりませんでした。これについて何か情報はありませんでしょうか。) 以下のように、以前とは違って定数を定義するスコープが変わったようです。 class A end a = A.new a.instance_eval{ B = 'constant B' } A.module_eval{ C = 'constant C' } B # => "constant B" # 1.8.7 # => uninitialized constant B (NameError) # 1.9.1 C # => "constant C" # 1.8.7 # => uninitialized constant C (NameError) # 1.9.1 (class << a ; self end)::B # => "constant B" # 1.9.1 A::C # => "constant C" # 1.9.1 a.instance_eval{ ::D = 'constant D' } A.module_eval{ ::E = 'constant E' } D # => "constant D" # 共通 E # => "constant E" # 共通 > > 全体的に見て、メソッド名だけ書かれているのは > 追加されたか変更(非互換ではなく機能追加?)があったか > のどちらかのようでした。 > 可能ならそのどちらかだけでもわかるようになっていると > よいなと思いました。 同意します。 -- okkez okkez000@gmail.com