gpt4 book ai didi

ruby - 为什么我不能从类中访问私有(private)函数?

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

以下代码打印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/

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