鉴于以下课程:
class Something
def initialize
@test = "test"
end
end
为什么ruby在调用未声明的实例变量时返回nil?
thingy = Something.new
thingy.instance_variable_get(:@var) # nil
thingy.instance_variable_get(:@test) # "test"
与某些错误消息相反,表明实例中缺少该变量。我希望得到的答案是解释ruby以这种方式实现实例变量的原因。
答案 0 :(得分:2)
它只是在Ruby中实现实例变量的方式。全局变量也是如此。如果将-w
参数传递给ruby,也可以看到有关此类事情的警告。
✗ irb -w
2.3.1 :001 > @a
(irb):1: warning: instance variable @a not initialized
=> nil
答案 1 :(得分:0)
因为允许对象具有空值,而不是抛出错误。例如用户,必须有姓名和地址,但电子邮件地址是可选的,在继续之前可以进行nil检查。
if customer1.name == nil #personalized error code here
if customer1.email == nil customer1.email = "not given"