Bal*_*ala 1 ruby variables class
我理解类变量应该从一开始@@.现在我有这个课:
class C
@v = "my variable"
def self.get_v
@v
end
end
puts C.get_v #returns "my variable"
Run Code Online (Sandbox Code Playgroud)
是@v仍然是一个类变量?但它没有@@?
不,它是一个类实例变量,即类对象的实例变量C.
两者之间的区别在于前者在层次结构的所有类中都是可见的,后者仅在定义它的类中可见.一个简单的例子(我希望)解释:
class A
@a = 0 # class instance variable
@@b = 1 # class variable
end
class B < A
@a = 1
@@b = 2
end
puts A.a # => 0
# the definition of @@b inside B have altered the value
# inside A. It's not the case for @a.
puts A.b # => 2
Run Code Online (Sandbox Code Playgroud)