我的理解是,这private
意味着对实例私有。私有方法不能与显式接收器(甚至)一起调用self
。要调用私有方法,我必须经历如下过程:
class Sample
def foo
baz
end
private
def baz
end
end
Sample.new.foo
这将调用私有baz
方法。有没有一种方法可以通过显式接收器直接调用私有方法?
是的,可以通过以下方式实现Kernel#send
:
receiver.send :method_name, parameters
尽管有类似的变通方法BasicObject#instance_eval
或Kernel#binding
操纵,但调用私有方法的常见方法是send
在接收方上调用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句