Asp Forum
Home
|
Login
|
Register
|
Search
Forums
>
comp.lang.ruby
Constant lookup
Adam Gardner
4/12/2009 6:14:00 PM
I've come across an odd issue when using a constant that is defined
within more than one module namespace. I've searched this
forum/ml/newsgroup for some answers, but I didn't come across anything
that quite addressed the situation I'm seeing.
Can anyone explain why this occurs? Is it supposed to? It doesn't make a
ton of sense to me.
> module Z
> class A
> def initialize
> puts "Z::A"
> end
> end
> module Y
> module X
> class A
> def initialize
> puts "Z::Y::X::A"
> end
> end
> end
> class B
> include X
> def initialize
> puts "Z::Y::B"
> @a = A.new
> end
> end
> end
> end
>
> Z::A.new
Z::A
=> #<Z::A:0x573dc>
>
> Z::Y::X::A.new
> Z::Y::X::A
=> #<Z::Y::X::A:0x5030c>
>
> Z::Y::B.new
Z::Y::B
Z::A
=> #<Z::Y::B:0x48e18 @a=#<Z::A:0x48dc8>>
>
> Z::Y::B.const_get("A")
=> Z::Y::X::A
> module Z
> module Y
> class B
> const_get("A")
> end
> end
> end
=> Z::Y::X::A
>
> module Z
> module Y
> class B
> A
> end
> end
> end
=> Z::A
It seems to me, though obviously I'm wrong, that the bare constant 'A'
should evaluate to exactly the same thing as self.const_get("A").
In the mean time, I'll just rename my constants to non-conflicting
names, but... why is this working this way in the first place?
--
Posted via
http://www.ruby-...
.
Servizio di avviso nuovi messaggi
Ricevi direttamente nella tua mail i nuovi messaggi per
Constant lookup
Inserendo la tua e-mail nella casella sotto, riceverai un avviso tramite posta elettronica ogni volta che il motore di ricerca troverà un nuovo messaggio per te
Il servizio è completamente GRATUITO!
x
Login to ForumsZone
Login with Google
Login with E-Mail & Password