有没有更优雅的方式来编写这段代码?
def create_a_hash_from_a_collection
my_hash = {}
collection_of_hashes.each do |key, value|
my_hash[key] = {} if my_hash[key].nil?
my_hash[key] = value
end
my_hash
end
在我看来笨拙的一行是:
my_hash[key] = {} if my_hash[key].nil?
有没有简写的表达方式?
最佳答案
如果您想为初始散列中的每个键都使用一个全新的散列,您需要使用一个 block 对其进行初始化:
hash = Hash.new { |hash, key| hash[key] = {} }
hash[:foo].object_id == hash[:bar].object_id #=> false
否则,如果你这样做,它将始终是相同的默认散列
hash = Hash.new({})
hash[:foo].object_id == hash[:bar].object_id #=> true
关于ruby - 什么是具有 'nil' 条件的优雅 Ruby 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53297664/