module variables

A

ako...

hello,

module MyModule
def MyModule.mymethod(var)
@var = var
end
end

1. when module method MyModule.mymethod creates module variable @var,
and no class mixes in this module, where is this variable created?

2. module variables become class variables for the classes that mix in
the module. so if the module method MyModule.mymethod changes module
variable @var then this variable is changed in all the classes/objects
that have this module mixed in. is this correct?

thanks
konstantin
 
G

gwtmp01

module MyModule
def MyModule.mymethod(var)
@var = var
end
end

1. when module method MyModule.mymethod creates module variable @var,
and no class mixes in this module, where is this variable created?

The instance variable belongs to MyModule, which is an object. In
particular, MyModule is an instance of the class Module. The instance
variable is unaffected by any usage of MyModule via include/extend.
2. module variables become class variables for the classes that mix in
the module.

No. Instance variables are not propagated/shared via the class
hierarchy
nor via the mixin hierarchy.
so if the module method MyModule.mymethod changes module
variable @var then this variable is changed in all the classes/objects
that have this module mixed in. is this correct?

Instance variables are private to the associated object, they are not
shared.

Separate and distinct from instance variables are 'class variables'
which
are shared via the class hierarchy. There are some subtle details of
this
sharing and in general you should view class variables and instance
variables
as two very different beasts.


Gary Wright
 

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

Members online

Forum statistics

Threads
473,780
Messages
2,569,608
Members
45,252
Latest member
MeredithPl

Latest Threads

Top