如何创建可继承的类变量?

时间:2014-05-15 20:27:28

标签: ruby inheritance

这就是我正在做的事情:

$ cat 1.rb
#!/usr/bin/env ruby
class A
    @a = 1
    @@b = 2
    def self.m
        p @a
        p @@b
    end
end
class B < A
end
class C < A
    @@b = 3
end
B.m
$ ./1.rb
nil
3

我希望看到12。我真的不明白为什么,我能做什么?

1 个答案:

答案 0 :(得分:2)

这些其他帖子可以帮助您解决问题:

类变量可由子类访问,但绑定到类对象的实例变量不是。

class A
  @a = 1 # instance variable bound to A
  @@b = 2 # class variable bound to A
end

class B < A; end # B is a subclass of A

# B has access to the class variables defined in A
B.class_variable_get(:@@b) # => 2

# B does not have access to the instance variables bound to the A object
B.instance_variable_get(:@a) # => nil

绑定到类对象的实例变量通常称为&#39;类实例变量&#39;。