我理解局部变量仅限于它们声明的范围,只要该类存在,实例变量就存在,但是如果在类范围内声明局部变量而不使用@
作为前缀,会发生什么? ?即使您没有使用@
将其声明为一个变量,它是否隐含地是一个实例变量?
答案 0 :(得分:2)
只要类存在,就会存在实例变量
只要对象存在,它们就存在。实例变量是每个对象,而不是每个类。
如果在类范围中声明局部变量而不使用@?
作为前缀,会发生什么
然后变量在类定义中的范围内,但不在该类定义中的任何def
内,因为它们引入了新的范围。
这是不是隐含地使它成为一个实例变量,即使你没有用@来声明它呢?
没有
如果使用define_method
而不是def
来创建方法,则可以在方法中访问局部变量,但由于变量只存在一次(每个对象不存在一次),因此它们会起作用在这种情况下,更像是类变量而不是实例变量。我也想不出你为什么这么用它们的好理由。
答案 1 :(得分:1)
使用@makes为您创建的对象的实例变量。当您使用该对象执行操作时,可以设置局部变量,但在使用后它们会消失。只要有对象,实例变量就会保持不变。