我有两个哈希值,需要根据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
或以其他方式简化/减少它?
提前致谢!
答案 0 :(得分:2)
您可以使用三元运算符直接选择要调用sudo mount -t cifs //$mac_host/$share $mountpoint -o nounix,sec=ntlmssp,username=$user,password=$password
的对象,例如:
each
如果(SOME_CONDITION ? hash_a : hash_b).each do |x|
# some code in here
end
相当简单,这是一个很好的干净方法。如果条件更复杂,则应分别将条件或整个对象选择提取到自己的方法中。