Tôi là một chút nhầm lẫn về hành vi này từ ruby (1.9) phiên dịchcó được phương pháp của một đối tượng trong ruby
class Foo
def pub
private_thing
end
private
def private_thing
puts "private touch"
end
end
x = Foo.new
x.pub
private touch
=> nil
cho đến nay rất tốt.
x.private_thing
NoMethodError: private method `private_thing' called for #<Foo:0xb76abd34>
from (irb):25
from :0
vẫn ổn. đó là những gì tôi mong đợi
nhưng tại sao điều này trống?
x.methods(false)
=> []
trong khi điều này mang lại cho tôi những gì tôi mong đợi?
Foo.instance_methods(false)
=> ["pub"]