次のコードでメソッドの動作を理解しようとしています。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"
何が起こっているのかについての指針は、どちらの場合にも役立ちます。