gpt4 book ai didi

ruby - 获取ruby中对象的方法

转载 作者:数据小太阳 更新时间:2023-10-29 06:41:50 24 4
gpt4 key购买 nike

我对 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"]

最佳答案

确实,“methods”方法好像已经消失了。你应该使用 public_instance_methods反而。

要解释为什么 x.methods(false) 会这样,请回顾一下 ruby​​ 1.9.1 文档 http://www.ruby-doc.org/core-1.9.1/Object.html#method-i-methods .如果您在传递参数时看到源代码,它的行为与 singleton_methods 相同,这就是您所看到的。

关于ruby - 获取ruby中对象的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7788221/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com