On Thu, May 28, 2009 at 8:42 AM, Sandworth Meb <farmsal / yahoo.com> wrote:
> Hi,
>
> I would like to be able to have something like:
> A class with a private method "jim" which can be called on objects of
> the class, when self is the class.
>
> i.e. like:
>
> class Kam
>
>  ¨Âåæ óåìæ®ãáììßðòéöáô>  ¨Âáí½Ëáí®îå÷
>  ¨Âáí®ðòéöáôåßíåôèï>  ¨Âîä
>
> private
>
>  ¨Âåæ ðòéöáôåßíåôèïä
>  ¨Âõô¢ãáî§ô äï ôèáô>  ¨Âîä
>
> end
>
> Kam.call_private #exception: called private method
>
> Since this doesn't work, is something like this possible? Or is this
> sort of thing supposed to be bad design? It seems natural enough to me.

Here is one way (access restriction is not very strict in Ruby):

irb(main):001:0> class Kam
irb(main):002:1> def self.call_private
irb(main):003:2> k = Kam.new
irb(main):004:2> k.send(:private_method)
irb(main):005:2> end
irb(main):006:1> private
irb(main):007:1> def private_method
irb(main):008:2> puts "It's private"
irb(main):009:2> end
irb(main):010:1> end
=> nil
irb(main):011:0> Kam.call_private
It's private

Hope this helps,

Jesus.