1

我知道当我们在 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

此外,当我调用 putsHello.var3我得到相同的noMethodError

谁能解释我在哪里弄错了?

4

2 回答 2

1

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

一篇关于它们的用法和区别的文章。要记住的重要一点:当您声明一个类层次结构变量时,它在类和所有下降(继承)类之间共享。这很少是你想要的。

于 2015-03-18T02:07:28.750 回答
0

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

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

于 2015-03-18T08:47:58.007 回答