私のコードは次のとおりです。
hash = { two: 2, three: 3 }
def hash_add(hash, new_key, new_value)
temp_hash = {}
temp_hash[new_key.to_sym] = new_value
temp_hash.merge!(hash)
hash = temp_hash
puts hash
end
hash_add(hash, 'one', 1)
メソッド内では をputs hash
返します{ :one => 1, :two => 2, :three => 3 }
が、hash1
をメソッドに入れると、その後は変更されません。割り当てが関数の外に出ていないようです。
更新されたハッシュを返し、変更したいハッシュをメソッドの外で設定できると思います。
hash = hash_add(hash, 'one', 1)
しかし、ハッシュに与える割り当てがメソッドの外側に固執しない理由がわかりません。
私はこれを持っています。
def hash_add(hash, new_key, new_value)
temp_hash = {}
temp_hash[new_key.to_sym] = new_value
temp_hash.merge!(hash)
hash.clear
temp_hash.each do |key, value|
hash[key] = value
end
end
これにより、このメソッドが呼び出されたときに必要なものが得られますが、そのようにハッシュを再構築する必要があるのは少し過剰に思えます。