我只是想了解destroy
以下代码中方法的行为:
更新:请注意,我的目的是了解行为,而不是将 nil 分配给变量的直接解决方案。
def conf
@conf ||= { 'foo' => { 'bar' => 'baz' } }
end
def destroy
conf = nil
end
def change
conf['foo']['bar'] = 'meh'
end
def add
conf['foo']['abc'] = 'moo'
end
这是调用该add
方法的输出:
add
pp conf
# {"foo"=>{"bar"=>"baz", "abc"=>"moo"}}
change
方法
change
pp conf
# {"foo"=>{"bar"=>"meh"}}
destroy
方法
destroy
pp conf
# {"foo"=>{"bar"=>"baz"}}
那么,为什么不destroy
导致conf
拥有nil
?
另一个相关的片段,这次是标量而不是哈希:
def foo
@foo ||= "bar"
end
def destroyfoo
foo = nil
end
def changefoo
foo = "baz"
end
调用时的结果changefoo
和destroyfoo
两者:
destroyfoo
puts foo
# "bar"
...
changefoo
puts foo
# "bar"
在这两种情况下,任何关于可能发生的事情的指示都会很有用。