From: dblack@... Date: 2006-12-12T08:34:52+09:00 Subject: Re: private methods in Ruby ---2049402039-1599948326-1165880090=:15685 Content-Type: MULTIPART/MIXED; BOUNDARY="-2049402039-1599948326-1165880090=:15685" This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. ---2049402039-1599948326-1165880090=:15685 Content-Type: TEXT/PLAIN; charset=X-UNKNOWN; format=flowed Content-Transfer-Encoding: QUOTED-PRINTABLE Hi -- On Tue, 12 Dec 2006, hemant wrote: > ##Won't work method #1 > > class Foobar > private > def foo; p "Foobar"; end > end > > class Baz < Foobar > def blah; foo; end > end > > baz =3D Baz.new > baz.foo > > ## Work method #2 > > class Foobar > private > def foo; p "Foobar"; end > end > > class Baz < Foobar > def blah; foo; end > end > > baz =3D Baz.new > baz.blah > > PickAxe2: > > If a method is private, it may be called only within the context of > the calling object=97it is never possible to access another object's > private methods directly, even if the object is of the same class as > the caller. > > So what happens in Method#2, why foo can be easily called, when called > from inside the class Baz? I mean, that method foo should be still > bound to instance baz...so in which context foo gets called in > Method#2. "In the context of" an object means: "when 'self' is that object". In the first example, your call to foo takes place when baz is not self. In the second example, inside blah, self is indeed baz, so it's allowed to call foo. David --=20 Q. What's a good holiday present for the serious Rails developer? A. RUBY FOR RAILS by David A. Black (http://www.manning.com/black) aka The Ruby book for Rails developers! Q. Where can I get Ruby/Rails on-site training, consulting, coaching? A. Ruby Power and Light, LLC (http://www.rubypal.com) ---2049402039-1599948326-1165880090=:15685-- ---2049402039-1599948326-1165880090=:15685--