gpt4 book ai didi

ruby - 更智能的深度哈希初始化方法

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

我需要每 wday 小时分钟使用一个键的散列。我写了这个:

result = {}
for wday in 1..7 do
result[wday] = {}
for hour in 0..23 do
result[wday][hour] = {}
for minute in 0..59 do
result[wday][hour][minute] = 0
end
end
end

我想知道是否有更好的方法可以用更少的代码行实现相同的行为,并且保持原样的可读性。

最佳答案

您可以尽可能使用默认过程:

hash = Hash.new do |h, k|
h[k] = Hash.new do |h1, k1|
h1[k1] = Hash.new do |h2, k2|
h2[k2] = 0 if (0..59).include?(k2)
end if (0..23).include?(k1)
end if (1..7).include?(k)
end

然后检查:

hash[1][2][3]
#=> 0
hash[1][2][300]
#=> nil

这个解决方案的主要优点是您不需要创建一堆对象,您只需创建一个规则。如果您的实例中有少量对象,则创建对象是可能的,但如果您想创建大量对象,则可能会出现问题。

关于ruby - 更智能的深度哈希初始化方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44155706/

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