H
Hal Fulton
I'm curious as to how this little bit of magic works:
hal@alpha ~/projects/peco $ irb
irb(main):001:0> foo = Class.new(Array)
=> #<Class:0x40202470>
irb(main):002:0> MyArray = Class.new(Array)
=> MyArray
irb(main):003:0>
In other words, when I create a class with Class.new, *and* assign it
to a constant, somehow it knows its own name (via inspect), just as
if I had done "class MyArray < Array".
In the latter case, somehow it's more understandable to me.
Perhaps even more perplexing:
irb(main):007:0> A = B = C = Class.new(Hash)
=> B
irb(main):008:0> x = C.new
=> {}
irb(main):009:0> x.class
=> B
What? Not A or C, the first or last, but B?
Anyone?
Hal
hal@alpha ~/projects/peco $ irb
irb(main):001:0> foo = Class.new(Array)
=> #<Class:0x40202470>
irb(main):002:0> MyArray = Class.new(Array)
=> MyArray
irb(main):003:0>
In other words, when I create a class with Class.new, *and* assign it
to a constant, somehow it knows its own name (via inspect), just as
if I had done "class MyArray < Array".
In the latter case, somehow it's more understandable to me.
Perhaps even more perplexing:
irb(main):007:0> A = B = C = Class.new(Hash)
=> B
irb(main):008:0> x = C.new
=> {}
irb(main):009:0> x.class
=> B
What? Not A or C, the first or last, but B?
Anyone?
Hal