据我所知,当我们在ruby中定义一个类变量时,它先于
@@variableName
,但在此代码中
class Hello
@var2
@@var3=0
def foo1
return @var1
end
def set_foo1(par1)
@var1=par1
end
end
我知道var3是一个类变量,必须用一些值初始化。但是var2怎么样? var2仍然对应一个对象吗?
当我用obj1.var2=100
调用程序时,我得到 noMethodError
另外,当我调用puts Hello.var3
时,我会得到相同的 noMethodError
任何人都可以解释我错在哪里吗?
答案 0 :(得分:1)
@var2
是类级实例变量,而@@var3
是类层次结构变量。
关于两者之间usage and differences的文章。要记住的重要事项:当您声明一个类层次结构变量时,它在类和所有降序(继承)类之间共享。这很少是你想要的。
答案 1 :(得分:0)
类就像任何其他对象一样是对象。对象可以包含实例变量。因此,类可以包含实例变量。
这真的没什么特别之处。在Ruby中理解这一点非常重要。