gpt4 book ai didi

ruby - 什么是具有 'nil' 条件的优雅 Ruby 方法?

转载 作者:太空宇宙 更新时间:2023-11-03 17:42:49 25 4
gpt4 key购买 nike

有没有更优雅的方式来编写这段代码?

    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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com