获取Ruby对象的方法
发布时间:2020-12-16 19:41:05 所属栏目:百科 来源:网络整理
导读:对于 Ruby(1.9)解释器的这个行为,我有些困惑 class Foo def pub private_thing end private def private_thing puts "private touch" end endx = Foo.newx.pubprivate touch= nil 到现在为止还挺好. x.private_thingNoMethodError: private method `private_
对于
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"] 解决方法
的确,“方法”的方法似乎已经消失了.你应该使用
public_instance_methods.
为了解释为什么x.methods(false)的行为是这样的,回头看一下ruby 1.9.1 docs http://www.ruby-doc.org/core-1.9.1/Object.html#method-i-methods.如果你看到源代码,如果你传入一个参数,它的行为是singleton_methods,这是你正在寻找的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |