我怎样才能重构调用不同函数的ruby代码,但对它们的响应做同样的事情呢?

时间:2015-07-13 17:43:43

标签: ruby ruby-on-rails-4

这是我重构的方法。重构此代码的好方法是什么? 有没有办法将方法调用放在列表中,并在方法之一返回有效响应时立即返回?

  def method
    response_hash = method1
    return response_hash if response_hash.present?

    response_hash = method2
    return response_hash if response_hash.present?

    response_hash = method3
    return response_hash if response_hash.present?

    response_hash = method4
    return response_hash if response_hash.present?
  end

1 个答案:

答案 0 :(得分:3)

似乎您想要返回第一个非空结果。

def my_method
  [:method1, :method2, :method3, :method4].each do |method_name|
    result = send(method_name)
    return result if result.present?
  end
end

符号/ send用于维护评估的惰性(不要评估超过必要的)