以下代码打印 NoMethodError
。我不明白原因。虽然我调用的方法是私有(private)的,但我是从类内部调用它的。类 var 不能访问它的私有(private)变量/函数吗?我可以用 Java 做到这一点。
class Tester
private
def func_pri
puts("From a private function")
end
protected
def func_prot
puts("From a protected function")
end
public
def func_pub
puts("From a public function")
end
public
def caller(object)
object.func_pub
object.func_pri # This statement causes error
object.func_prot
end
end
o = Tester.new
o.caller(o)
最佳答案
您不能在对象上调用私有(private)方法,甚至不能在 self
上调用。删除object.
部分,然后调用将继续self
。
如果您确实想调用私有(private)方法,则始终可以使用object.send(:func_pri)
。
在这些方面,Ruby 与 Java 等语言有很大不同。有关更多信息,您可能需要查看 http://www.ruby-doc.org/docs/ProgrammingRuby/ ,“类、对象和变量”一章,“访问控制”一节
关于ruby - 为什么我无法从类内访问私有(private)函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11027945/