2

以下代码打印NoMethodError. 我不明白原因。虽然我调用的方法是私有的,但我是从类中调用它。类 var 不能访问它的私有变量/函数吗?我可以在 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)
4

1 回答 1

5

您不能在对象上调用私有方法,甚至在self. 移除object.部件,然后通话将继续self

如果你确实想调用私有方法,你总是可以使用object.send(:func_pri).

在这些方面,Ruby 与 Java 等语言完全不同。有关更多信息,您可能需要查看http://www.ruby-doc.org/docs/ProgrammingRuby/,“类、对象和变量”一章,“访问控制”部分

于 2012-06-14T06:50:46.227 回答