T
Tim Bates
Hi again,
The previous email had "instance_eval" in the title, because I meant to
include the contents of this mail in it but then didn't. It actually
used module_eval, although it makes no difference. This one is a
separate problem:
irb(main):001:0> class Klass
irb(main):002:1> @@foo = "Foo!"
irb(main):003:1> end
=> "Foo!"
irb(main):004:0> Klass.instance_eval{ puts @@foo }
NameError: uninitialized class variable @@foo in Object
from (irb):4
from (irb):4:in `instance_eval'
from (irb):4:in `instance_eval'
from (irb):4
irb(main):005:0> Klass.module_eval{ puts @@foo }
NameError: uninitialized class variable @@foo in Object
from (irb):5
from (irb):5:in `module_eval'
from (irb):5:in `module_eval'
from (irb):5
irb(main):006:0> Klass.new.instance_eval{ puts @@foo }
NameError: uninitialized class variable @@foo in Object
from (irb):6
from (irb):6:in `instance_eval'
from (irb):6:in `instance_eval'
from (irb):6
Why can't I get at a class variable from instance_eval? It works fine
for instance variables:
irb(main):001:0> class Klass
irb(main):002:1> def initialize
irb(main):003:2> @instance_foo = "InstanceFoo!"
irb(main):004:2> end
irb(main):005:1> end
=> nil
irb(main):006:0> Klass.new.instance_eval{ puts @instance_foo }
InstanceFoo!
=> nil
BTW, both this email and the previous one are with 1.8.0-preview3.
Tim Bates
The previous email had "instance_eval" in the title, because I meant to
include the contents of this mail in it but then didn't. It actually
used module_eval, although it makes no difference. This one is a
separate problem:
irb(main):001:0> class Klass
irb(main):002:1> @@foo = "Foo!"
irb(main):003:1> end
=> "Foo!"
irb(main):004:0> Klass.instance_eval{ puts @@foo }
NameError: uninitialized class variable @@foo in Object
from (irb):4
from (irb):4:in `instance_eval'
from (irb):4:in `instance_eval'
from (irb):4
irb(main):005:0> Klass.module_eval{ puts @@foo }
NameError: uninitialized class variable @@foo in Object
from (irb):5
from (irb):5:in `module_eval'
from (irb):5:in `module_eval'
from (irb):5
irb(main):006:0> Klass.new.instance_eval{ puts @@foo }
NameError: uninitialized class variable @@foo in Object
from (irb):6
from (irb):6:in `instance_eval'
from (irb):6:in `instance_eval'
from (irb):6
Why can't I get at a class variable from instance_eval? It works fine
for instance variables:
irb(main):001:0> class Klass
irb(main):002:1> def initialize
irb(main):003:2> @instance_foo = "InstanceFoo!"
irb(main):004:2> end
irb(main):005:1> end
=> nil
irb(main):006:0> Klass.new.instance_eval{ puts @instance_foo }
InstanceFoo!
=> nil
BTW, both this email and the previous one are with 1.8.0-preview3.
Tim Bates