けいじゅ@いしつかです.

以下のURLで

  http://www.ruby-forum.com/topic/168986#new

下記のような質問が上がっています:

--
## in irb

>> def why?
>> end
=> nil
>> Object.public_instance_methods.include?("why?")
=> true


## in test.rb

def why?
end
p Object.private_instance_methods.include?("why?")  # => true
--

で, これは, irb で評価に使っているbinding が:

  binding = eval("def irb_binding; binding; end; irb_binding", TOPLEVEL_BINDING)

だからなんですが, このとき

  eval("def foo; end", binding)
  
したとき, fooがpublicなのかprivateなのかが, ruby1.8系とruby1.9系とで違っ
ていて,

  1.8系では, public
  1.9系では, private

になります. これって, お互いに仕様が異なるってことです? それとも, ど
ちらかのバグなんです? 

__
---------------------------------------------------->> 石塚 圭樹 <<---
---------------------------------->> e-mail: keiju / ishitsuka.com <<---