在以下示例中,一切对我来说都是合乎逻辑的:
class Something
def initialize
@x=101
end
def getX
return @x
end
end
obj = Something.new
puts obj.getX
=>101
Something.new 将创建带有实例变量@x 的Something 类的新实例,该变量对Something 类的所有方法都是可见的。
但是在没有初始化(构造函数)方法的第二个例子中会发生什么。
class Something
def bla_bla_method
@x=101
end
def getX
return @x
end
end
obj = Something.new
puts obj.getX
=>nil
obj.bla_bla_method
puts obj.getX
=>101
因此,现在调用 bla_bla_method 时将创建(如构造函数)新的 instance_variable @x 并将该实例变量添加到“实例变量表”中,该变量再次可用于所有方法?
所以现在如果我在Something类中添加新方法“new_method”(在第二个例子中):
def new_method
@x=201
end
...
obj.bla_bla_method
puts obj.getX
=>101
obj.new_method
puts obj.getX
=>201
因此,如果我做对了,类的每个方法都可以创建可用于类的所有方法的新实例变量?然后每个方法都可以一遍又一遍地覆盖该实例变量(循环)?
我是 ruby 新手,所以也许我在这里犯了大错或不了解一些基本概念,所以不要大喊大叫:D