Basic ruby Question

D

Deepak Gole

[Note: parts of this message were removed to make it a legal post.]

Hello,

I didn't understand the following concept.

*class Universe

private
def self.private_method
p "=========Hello world======="
end

end

Universe.**private_method** => "=========Hello world======="
*

How come I get the o/p ( *"=========Hello world=======" * ) as I have
declared that method as private.

Thanks in advance
Deepak Gole (DG)
 
R

Raveendran Jazzez

Hi All,

But it was working in this way.

class Universe
def self.private_method
p "=========Hello world======="
end
end
u=Universe.new
u.private_method

# => private.rb:7: undefined method `private_method' for
#<Universe:0x2b66aa0> (NoMethodError)

what is the Difference betweeen these two types?

u=Universe.new
u.private_method && Universe.private_method


Regards,
P.Raveendran
http://raveendran.wordpress.com
 
T

Torsten Mangner

Raveendran said:
But it was working in this way.

class Universe
def self.private_method
p "=========Hello world======="
end
end
u=Universe.new
u.private_method

# => private.rb:7: undefined method `private_method' for
#<Universe:0x2b66aa0> (NoMethodError)

Your second example, does not work either. You tried to call a
class-method on an object.

I don't know how useful a private class-method could be. it doesn't make
to much sense for me.

i'm pretty sure, all you want is a simple instance-method: leave out the
"self." at the methods declaration:

private
def private_method
p "something"
end
what is the Difference betweeen these two types?

u=Universe.new
u.private_method && Universe.private_method

for the difference between instance and class-methods use google on
there terms. the first explanation i found, should be sufficient:
http://www.juixe.com/techknow/index.php/2007/01/22/ruby-class-tutorial/
 
S

Stefano Crocco

Hello,

I didn't understand the following concept.

*class Universe

private
def self.private_method
p "=========Hello world======="
end

end

Universe.**private_method** => "=========Hello world======="
*

How come I get the o/p ( *"=========Hello world=======" * ) as I have
declared that method as private.

Thanks in advance
Deepak Gole (DG)

The private method only makes instance methods private, not class methods.
This means the reason you can call Universe.private_method is that, despite
its name, the method is still public. To make a class method private, you can
use the Module#private_class_method method:

class Universe

def self.private_method
p "Hello world"
end

private_class_method :private_method

end

Universe.private_method

=> private method `private_method' called for Universe:Class (NoMethodError)

I hope this helps

Stefano
 
D

Deepak Gole

[Note: parts of this message were removed to make it a legal post.]

Hello stefano,

Thanks for your explanation.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Members online

Forum statistics

Threads
473,774
Messages
2,569,596
Members
45,134
Latest member
Lou6777736
Top