我有两个哈希,需要根据 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
相当简单,那么这是一种不错且干净的方法。如果条件更复杂,则应将条件甚至整个对象选择分别提取到它们自己的方法中。