From: amit saxena Date: 2008-06-11T20:44:46+09:00 Subject: Re: private class methods- functionality or shortcoming? HELP...!!! --- On Tue, 6/10/08, amit saxena wrote: > From: amit saxena > Subject: private class methods- functionality or shortcoming? > To: "ruby-talk ML" > Date: Tuesday, June 10, 2008, 1:40 PM > "> The Module#private method only works for instance > methods, > > not for class > > method." > > My question is, why is it designed so? What's the advantage in > it? > > Amit > > > --- On Mon, 6/9/08, Stefano Crocco > wrote: > > > From: Stefano Crocco > > Subject: Re: private class methods- functionality or > shortcoming? > > To: "ruby-talk ML" > > > Date: Monday, June 9, 2008, 7:39 PM > > On Monday 09 June 2008, amit saxena wrote: > > > I just switched to Ruby and came across it. > > > If we have to make a class method private then we > > should write it as: > > > > class Abc > > class< private > def fun > p "hello" > end > end > > end > > > >But if we write as: > > class Abc > > private > def self.fun > p "hello" > end > > end > > > > > > > > then the class method is not private but behaves > as > > public. > > > > > > So, is it a carefully designed functionality? If > so, > > then what is the > > > thinking behind it? OR any other reasons behind > it? > > > Somebody told me that ruby encourages to define > class > > methods the first > > > way. But I think that if you are giving more than > one > > methods to do a > > > thing, then all should function the same way. > > > > > > Thanks and Regards, > > > Amit > > > > The Module#private method only works for instance > methods, > > not for class > > method. To make a class method private, you should use > the > > Module#private_class_method method. Note that, unlike > > private, > > private_class_method only accepts one argument, so > that you > > want to make more > > than one method private, you should call it multiple > times. > > > > So, the correct method to make the method private > using the > > second form is: > > > > class Abc > > > > def self.fun > > p "hello" > > end > > private_class_method :fun > > > > end > > > > I hope this helps > > > > Stefano