可以使用send
调用私有方法,但有没有办法以某种方式修补类以常规方式调用它?
答案 0 :(得分:3)
Module#public
可以解决问题。
class Foo
private
def hello
"hello"
end
end
class Foo
public :hello
end
答案 1 :(得分:0)
将私有方法转换为公共方法并不是一个好主意。你仍然可以这样做。
考虑您的原始课程和方法,如下所示
class A
private
def a
p "hello"
end
end
您可以将此方法a
转换为公开,如下所示
class A
alias_method :original_a, :a
def a
original_a
end
end
我们的想法是制作原始方法的别名副本,然后从具有相同名称的公共方法调用此原始私有方法。