[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

initialize

Jonathan Leighton

1/1/2006 1:56:00 PM

Should initialize() be public, private or protected, and why?

Thanks

--
Jonathan Leighton
http://turnips... | http://jonathanlei... | http://digital-...



5 Answers

ts

1/1/2006 2:06:00 PM

0

>>>>> "J" == Jonathan Leighton <lists@turnipspatch.com> writes:

J> Should initialize() be public, private or protected, and why?

moulon% cat b.rb
#!/usr/bin/ruby
class A
protected
def initialize
end
end

p A.private_instance_methods(false)
p A.protected_instance_methods(false)
moulon%

moulon% ./b.rb
["initialize"]
[]
moulon%



Guy Decoux


Jonathan Leighton

1/1/2006 3:50:00 PM

0

On Sun, 2006-01-01 at 23:06 +0900, ts wrote:
> >>>>> "J" == Jonathan Leighton <lists@turnipspatch.com> writes:
>
> J> Should initialize() be public, private or protected, and why?
>
> moulon% cat b.rb
> #!/usr/bin/ruby
> class A
> protected
> def initialize
> end
> end
>
> p A.private_instance_methods(false)
> p A.protected_instance_methods(false)
> moulon%
>
> moulon% ./b.rb
> ["initialize"]
> []
> moulon%

Thanks for the reply. Forgive me, but I don't understand what the point
is in your example? Or why initialize is returned by
private_instance_methods() but not protected_instance_methods()? Could
you elaborate a bit please?

Thanks

--
Jonathan Leighton
http://turnips... | http://jonathanlei... | http://digital-...



ts

1/1/2006 3:54:00 PM

0

>>>>> "J" == Jonathan Leighton <lists@turnipspatch.com> writes:

J> Thanks for the reply. Forgive me, but I don't understand what the point
J> is in your example? Or why initialize is returned by
J> private_instance_methods() but not protected_instance_methods()? Could
J> you elaborate a bit please?

#initialize (like #initialize_copy) is *always* a private method. Even if
you try to define it as public or protected, ruby will make it a private
method.


Guy Decoux


ts

1/1/2006 4:01:00 PM

0

>>>>> "t" == ts <decoux@moulon.inra.fr> writes:

t> #initialize (like #initialize_copy) is *always* a private method. Even if
t> you try to define it as public or protected, ruby will make it a private
t> method.

Well, there is an exception when you redefine its state after the creation

moulon% cat b.rb
#!/usr/bin/ruby
class A
def initialize
end
protected :initialize
end

A.new
moulon%

moulon% ./b.rb
/b.rb:8:in `new': protected method `initialize' called for #<A:0xb7d64e94> (NoMethodError)
from ./b.rb:8
moulon%

Guy Decoux




Jonathan Leighton

1/1/2006 4:25:00 PM

0

On Mon, 2006-01-02 at 00:53 +0900, ts wrote:
> >>>>> "J" == Jonathan Leighton <lists@turnipspatch.com> writes:
>
> J> Thanks for the reply. Forgive me, but I don't understand what the point
> J> is in your example? Or why initialize is returned by
> J> private_instance_methods() but not protected_instance_methods()? Could
> J> you elaborate a bit please?
>
> #initialize (like #initialize_copy) is *always* a private method. Even if
> you try to define it as public or protected, ruby will make it a private
> method.

Ah, okay, thanks.

--
Jonathan Leighton
http://turnips... | http://jonathanlei... | http://digital-...