получить методы объекта в ruby ​​

Я немного смущен этим поведением интерпретатора ruby ​​(1.9)

 class Foo
   def pub
     private_thing
   end

   private
   def private_thing
     puts "private touch"
   end
 end



x = Foo.new
x.pub
private touch
=> nil

пока все хорошо.

x.private_thing
NoMethodError: private method `private_thing' called for #<Foo:0xb76abd34>
from (irb):25
from :0

все еще в порядке. это то, что я ожидал

, но почему здесь пусто?

x.methods(false)
=> []

а это дает мне то, что я ожидал?

Foo.instance_methods(false)
=> ["pub"]
12
задан Ramy 17 October 2011 в 00:03
поделиться