Ruby 每个迭代器 - 根据 if 条件替换要迭代的哈希?



我有两个哈希,需要根据 if 条件的结果遍历其中一个。以下是我的代码当前的外观:

if SOME CONDITION
hash_a.each do |x|
some code in here
end
else 
hash_b.each do |x|
the same code in here
end

每个元素执行了大约 30 行代码,所以我的问题是:有没有办法让代码看起来更像这样:

SOME CONDITION ? hash_a.each do |x| : hash_b.each do |x|
some code in here 
end

还是以任何其他方式简化/减少它?

提前感谢!

您可以使用三元运算符直接选择要调用each的对象,例如:

(SOME_CONDITION ? hash_a : hash_b).each do |x|
# some code in here
end

如果SOME_CONDITION相当简单,那么这是一种不错且干净的方法。如果条件更复杂,则应将条件甚至整个对象选择分别提取到它们自己的方法中。

相关内容

  • 没有找到相关文章

最新更新