[lnkForumImage]
TotalShareware - Download Free Software

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


 

Forums >

comp.lang.ruby

Field Scope

forest

1/5/2006 12:28:00 PM

what is the scope of @run field in the code below. Is it module static
? If not, how module static methods can access it ?

module Test
module Unit
def self.run=(flag)
@run = flag
end

def self.run?
@run ||= false
end
end
end

at_exit do
unless $! || Test::Unit.run?
exit Test::Unit::AutoRunner.run($0 != "-e" && $0)
end
end

3 Answers

Ross Bamford

1/5/2006 1:39:00 PM

0

On Thu, 05 Jan 2006 12:28:07 -0000, forest <forest.aa@gmail.com> wrote:

> what is the scope of @run field in the code below. Is it module static
> ? If not, how module static methods can access it ?
>
> module Test
> module Unit
> def self.run=(flag)
> @run = flag
> end
>
> def self.run?
> @run ||= false
> end
> end
> end

Forget about static and all that, and remember that modules are objects
too. Test::Unit is just a constant, that references the Module instance
for that module.

Does this make it any clearer?

Test::Unit.run = 'Hmm...'
Test::Unit.instance_eval { @run } # => "Hmm..."

a = Test::Unit
a.instance_eval { @run } # => "Hmm..."

--
Ross Bamford - rosco@roscopeco.remove.co.uk

forest

1/5/2006 2:16:00 PM

0

Thanks a lot, it explains everything.

Funny that somewhere i read that ruby follows Least Surprise Paradigm,
but personally me i was deeply surprised several times, while learning
it :)

Ross Bamford

1/5/2006 2:19:00 PM

0

On Thu, 05 Jan 2006 14:15:33 -0000, forest <forest.aa@gmail.com> wrote:

> Thanks a lot, it explains everything.
>
> Funny that somewhere i read that ruby follows Least Surprise Paradigm,
> but personally me i was deeply surprised several times, while learning
> it :)
>

I feel the same way, but I realise now that I feel that way because I
expect Ruby to be as convoluted and... well, surprising, as other
languages. It surprises me by how unsurprising it is (*most of the time*)
;)

--
Ross Bamford - rosco@roscopeco.remove.co.uk