类体中变量的用途是什么?

时间:2015-03-18 01:51:15

标签: ruby ruby-2.2

据我所知,当我们在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

任何人都可以解释我错在哪里吗?

2 个答案:

答案 0 :(得分:1)

@var2是类级实例变量,而@@var3是类层次结构变量。

关于两者之间usage and differences的文章。要记住的重要事项:当您声明一个类层次结构变量时,它在类和所有降序(继承)类之间共享。这很少是你想要的。

答案 1 :(得分:0)

类就像任何其他对象一样是对象。对象可以包含实例变量。因此,类可以包含实例变量。

这真的没什么特别之处。在Ruby中理解这一点非常重要。