[lnkForumImage]
TotalShareware - Download Free Software

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


 

Forums >

comp.lang.ruby

Modules and methods

Javier Valencia

3/2/2005 11:40:00 AM

Explaine this to me please:

module MyMod

def mymethod
puts "hello"
priv_method
end

def priv_method
puts "world"
end

private :priv_method

end

MyMod.mymethod

undefined method `priv_method' for MyMod:Module (NoMethodError)


24 Answers

Robert Klemme

3/2/2005 11:45:00 AM

0


"Javier Valencia" <jvalencia@log01.org> schrieb im Newsbeitrag
news:4225A62A.9020700@log01.org...
> Explaine this to me please:
>
> module MyMod
>
> def mymethod
> puts "hello"
> priv_method
> end
>
> def priv_method
> puts "world"
> end
>
> private :priv_method
>
> end
>
> MyMod.mymethod
>
> undefined method `priv_method' for MyMod:Module (NoMethodError)

You're defining instance methods, i.e. if you create an instance of a
class that includes MyMod it will have these methods.

You probably want singleton methods of the module:

module MyMod
class <<self
def mymethod
puts "hello"
priv_method
end

def priv_method
puts "world"
end

private :priv_method
end
end

>> MyMod.mymethod
hello
world
=> nil

Kind regards

robert

Javier Valencia

3/2/2005 11:49:00 AM

0

Javier Valencia wrote:

> Explaine this to me please:
>
> module MyMod
>
> def mymethod
> puts "hello"
> priv_method
> end
>
> def priv_method
> puts "world"
> end
>
> private :priv_method
>
> end
>
> MyMod.mymethod
>
> undefined method `priv_method' for MyMod:Module (NoMethodError)
>
>
Sorry, mymethod definition is -> def MyMod.mymethod.

The result is the same


Brian Schröder

3/2/2005 12:10:00 PM

0

On Wed, 2 Mar 2005 20:48:35 +0900, Javier Valencia <jvalencia@log01.org> wrote:
> Javier Valencia wrote:
>
> > Explaine this to me please:
> >
> > module MyMod
> >
> > def mymethod
> > puts "hello"
> > priv_method
> > end
> >
> > def priv_method
> > puts "world"
> > end
> >
> > private :priv_method
> >
> > end
> >
> > MyMod.mymethod
> >
> > undefined method `priv_method' for MyMod:Module (NoMethodError)
> >
> >
> Sorry, mymethod definition is -> def MyMod.mymethod.
>
> The result is the same
>
>
How about:
--8<---
#!/usr/bin/ruby -wd

module MyMod

def MyMod.mymethod
puts "hello"
priv_method
end

private
def MyMod.priv_method
puts "world"
end

end

MyMod.mymethod
--8<---

regards,

Brian

--
Brian Schröder
http://ruby.brian-sch...



Javier Valencia

3/2/2005 12:16:00 PM

0

Brian Schröder wrote:

>On Wed, 2 Mar 2005 20:48:35 +0900, Javier Valencia <jvalencia@log01.org> wrote:
>
>
>>Javier Valencia wrote:
>>
>>
>>
>>>Explaine this to me please:
>>>
>>>module MyMod
>>>
>>> def mymethod
>>> puts "hello"
>>> priv_method
>>> end
>>>
>>> def priv_method
>>> puts "world"
>>> end
>>>
>>> private :priv_method
>>>
>>>end
>>>
>>>MyMod.mymethod
>>>
>>>undefined method `priv_method' for MyMod:Module (NoMethodError)
>>>
>>>
>>>
>>>
>>Sorry, mymethod definition is -> def MyMod.mymethod.
>>
>>The result is the same
>>
>>
>>
>>
>How about:
>--8<---
>#!/usr/bin/ruby -wd
>
>module MyMod
>
> def MyMod.mymethod
> puts "hello"
> priv_method
> end
>
> private
> def MyMod.priv_method
> puts "world"
> end
>
>end
>
>MyMod.mymethod
>--8<---
>
>regards,
>
>Brian
>
>
>
Yeah, i know that way, but why i have to use MyMod name into MyMod
itself, it looks ugly


Javier Valencia

3/2/2005 12:25:00 PM

0

Javier Valencia wrote:

> Brian Schröder wrote:
>
>> On Wed, 2 Mar 2005 20:48:35 +0900, Javier Valencia
>> <jvalencia@log01.org> wrote:
>>
>>
>>> Javier Valencia wrote:
>>>
>>>
>>>
>>>> Explaine this to me please:
>>>>
>>>> module MyMod
>>>>
>>>> def mymethod
>>>> puts "hello"
>>>> priv_method
>>>> end
>>>>
>>>> def priv_method
>>>> puts "world"
>>>> end
>>>>
>>>> private :priv_method
>>>>
>>>> end
>>>>
>>>> MyMod.mymethod
>>>>
>>>> undefined method `priv_method' for MyMod:Module (NoMethodError)
>>>>
>>>>
>>>>
>>>
>>> Sorry, mymethod definition is -> def MyMod.mymethod.
>>>
>>> The result is the same
>>>
>>>
>>>
>>
>> How about:
>> --8<---
>> #!/usr/bin/ruby -wd
>>
>> module MyMod
>>
>> def MyMod.mymethod
>> puts "hello"
>> priv_method
>> end
>>
>> private
>> def MyMod.priv_method
>> puts "world"
>> end
>>
>> end
>>
>> MyMod.mymethod
>> --8<---
>>
>> regards,
>>
>> Brian
>>
>>
>>
> Yeah, i know that way, but why i have to use MyMod name into MyMod
> itself, it looks ugly
>
>
well, the correct question is why can't i use the method without MyMod
precedence?


Javier Valencia

3/2/2005 12:49:00 PM

0

Just another example:

-------------------
module MyMod

def MyMod.mymethod
puts "hello"
priv_method
end

private
def MyMod.priv_method
puts "world"
end


end

MyMod.priv_method

outputs: "world"
-----------------------

this works, but it's under private. what's happening? i don't understand
anything



ts

3/2/2005 12:55:00 PM

0

>>>>> "J" == Javier Valencia <jvalencia@log01.org> writes:

J> private
J> def MyMod.priv_method
J> puts "world"
J> end

You have written something like this

private
class << self
def priv_method
puts "world"
end
end

i.e. private was the default for the module but not for the singleton
class.


Guy Decoux







Brian Schröder

3/2/2005 1:07:00 PM

0

On Wed, 2 Mar 2005 21:55:02 +0900, ts <decoux@moulon.inra.fr> wrote:
> >>>>> "J" == Javier Valencia <jvalencia@log01.org> writes:
>
> J> private
> J> def MyMod.priv_method
> J> puts "world"
> J> end
>
> You have written something like this
>
> private
> class << self
> def priv_method
> puts "world"
> end
> end
>
> i.e. private was the default for the module but not for the singleton
> class.
>

aha, that means:

#!/usr/bin/ruby -wd

module MyMod

def MyMod.mymethod
puts "hello"
priv_method
end

class << self
private
def priv_method
puts "world"
end
end

end

MyMod.mymethod => "Hello World"

MyMod.priv_method => Error, private method

would be the correct way to define it?

regards,

Brian

--
Brian Schröder
http://ruby.brian-sch...



ts

3/2/2005 1:15:00 PM

0

>>>>> "B" == =?ISO-8859-1?Q?Brian Schr=F6der?= <ISO-8859-1> writes:

B> would be the correct way to define it?

yes, you can do it like this. This is the same than when you want to define
an accessor (attr_...) for the "singleton" class


Guy Decoux




Javier Valencia

3/2/2005 1:27:00 PM

0

ts wrote:

>>>>>>"B" == =?ISO-8859-1?Q?Brian Schr=F6der?= <ISO-8859-1> writes:
>>>>>>
>>>>>>
>
>B> would be the correct way to define it?
>
> yes, you can do it like this. This is the same than when you want to define
> an accessor (attr_...) for the "singleton" class
>
>
>Guy Decoux
>
>
>
>
>
>
Never seen such way in documentation!
There should be an api change to allow a more "user friendly" way to do
things?