gpt4 book ai didi

ruby - Ruby 中的循环崩溃 - 遍历两个范围的组合

转载 作者:数据小太阳 更新时间:2023-10-29 08:36:29 26 4
gpt4 key购买 nike

我有一个遍历两个范围的代码。请看下面的例子:

(0..6).each do |wday|
(0..23).each do |hour|
p [wday,hour]
end
end

虽然这看起来非常简洁和可读,但有时 5 行可能太多了。人们可能想要编写一种更垂直紧凑的代码。

(0..6).to_a.product((0..23).to_a).each do |wday,hour|
p [wday, hour]
end

以上是我的尝试,但代码对我来说看起来很不自然。我错过了什么吗? ruby 是否有这种类型的循环崩溃的首选方法?如果没有,是否还有其他替代方法可以替代此解决方法?

最佳答案

以下是您的循环的稍微简洁的版本:

[*0..6].product([*0..23]).each do |wday,hour|
p [wday, hour]
end

这种方法确实有将范围扩展到内存中的缺点。

不过,我认为我首选的“折叠”循环方式,尤其是当特定循环结构出现在多个地方时,是将嵌套循环变成一个采用 block 和yield的方法它。例如

def for_each_hour_in_week
(0..6).each do |wday|
(0..23).each do |hour|
yield wday,hour
end
end
end

for_each_hour_in_week do |wday,hour|
p [wday,hour]
end

这使深层嵌套远离您的逻辑,并使您的意图清晰。

关于ruby - Ruby 中的循环崩溃 - 遍历两个范围的组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35148449/

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