why can't i access the private function from within the class?
The following code prints NoMethodError. I don't understand the reason . Though the method i am calling is private but i am calling it from within the class.Can't a class var access it's private variable/function ?. I could do this in 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)
You cannot call private methods on an object, not even on self. Remove the object. part, then the call will go on self.
If you do want to call a private method, you can always use object.send(:func_pri).
Ruby is quite different than languages like Java in these terms. For more information, you might want to take a look at http://www.ruby-doc.org/docs/ProgrammingRuby/, chapter 'Classes, Objects, and Variables', section 'Access Control'