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

时间:2017-11-22 16:19:21

标签: ruby if-statement foreach ternary-operator

我有两个哈希值,需要根据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

或以其他方式简化/减少它?

提前致谢!

1 个答案:

答案 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 相当简单,这是一个很好的干净方法。如果条件更复杂,则应分别将条件或整个对象选择提取到自己的方法中。