我了解局部变量仅限于声明它们的范围,并且只要类存在,实例变量就存在,但是如果您在类范围中声明局部变量而不用前缀会发生@
什么?即使您没有使用 an@
将其声明为实例变量,这不是隐含的吗?
问问题
429 次
2 回答
2
只要类存在,实例变量就存在
只要对象存在,它们就存在。实例变量是每个对象,而不是每个类。
如果你在类范围内声明一个局部变量而不用@作为前缀会发生什么?
然后变量在类定义的范围内,但不在该类定义内的任何def
s 内,因为它们引入了新的范围。
即使您没有使用 @ 将其声明为实例变量,这不是隐含地使其成为实例变量吗?
不。
如果您使用define_method
而不是def
创建方法,则可以在方法中访问局部变量,但是由于该变量仅存在一次(不是每个对象一次),因此在这种情况下,它们的行为更像是类变量而不是实例变量。我也想不出一个很好的理由为什么你会那样使用它们。
于 2012-12-17T17:50:42.423 回答
1
使用 @使它成为您创建的对象的实例变量。当您使用该对象执行操作时,您可以设置局部变量,但它们在使用后会消失。只要有对象,实例变量就会一直存在。
于 2012-12-17T17:54:49.217 回答