局部变量、实例变量、全局变量和类变量之间的区别是什么



我刚刚在学习Ruby,有一个非常初学者的问题。是四种类型变量之间的区别主要只是范围。所以局部变量只能在当前块中使用,实例变量只能在目前实例中使用,全局变量只能在每个作用域中使用,最后,类变量只能在现时类中使用?非常感谢!

尽管有一些皱纹。类变量(@@foo)可以从类的类方法和实例方法访问。

它们在继承方面的行为有些不明智:如果在基类中设置这样的变量,并在子类中再次设置,那么您将更改层次结构中所有类的值。如果您使用类变量来存储设置,这通常不是您想要的——您希望子类能够"覆盖"基类中的值,而无需实际更改基类的值。Rails为此提供了class_attribute:它创建了具有这种行为的访问器方法。

最后,不是真正的独立类型,但由于类是对象,所以也有类实例变量。这些对继承没有任何作用——层次结构中的每个类对象都有自己完全独立的对象。与类变量不同,实例不能直接操作类实例变量。

你做对了。区别只是范围。

很高兴您能够直观地理解这一点。区别只是范围(然而,在内存中处理它们的方式非常不同)。

最新更新