HELP...!!!


--- On Tue, 6/10/08, amit saxena <amit83.saxena / yahoo.com> wrote:

> From: amit saxena <amit83.saxena / yahoo.com>
> Subject: private class methods- functionality or shortcoming?
> To: "ruby-talk ML" <ruby-talk / ruby-lang.org>
> 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
> <stefano.crocco / alice.it> wrote:
> 
> > From: Stefano Crocco <stefano.crocco / alice.it>
> > Subject: Re: private class methods- functionality or
> shortcoming?
> > To: "ruby-talk ML"
> <ruby-talk / ruby-lang.org>
> > 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<<self
>         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