would be doing the work. But the ‘@@’ syntax sets the class variable to
Parent.
Thank you,
Marco
harp:~ > cat a.rb
class Parent
class << self
attr_accessor 'a'
def inherited child
child.a = 42
end
end
end
class Child < Parent
end
p Child.a
harp:~ > ruby a.rb
42
I’m trying to teach my Parent class how to set variables into its Child
class; ie
The parent and its children share class variables:
irb(main):001:0> class A; @@var = 2; end
=> 2
irb(main):002:0> class B < A; @@var; end
=> 2
… depending on the assignment order
class A; end
class B < A; @@cv = 1 end
class A; @@cv = 2 end
class A; @@cv end # => 2
class B; @@cv end # => 1 # !> class variable @@cv of A is overridden
by B
matz> I know this happens. I consider this as an error that Ruby does
not
matz> detect yet.
Fortunately some things have changed for the better since then:
class A; end
class B < A; @@cv = 1 end
class A; @@cv = 2 end
class A; @@cv end # => 2
class B; @@cv end # => 1 # !> class variable @@cv of A is overridden by B
================================================
class A; end
class B < A; @@cv = 1 end
class A; @@cv = 2 end
class A; @@cv end # => 2
class B; @@cv end # => 1 # !> class variable @@cv of A is overridden by B