这是我重构的方法。重构此代码的好方法是什么? 有没有办法将方法调用放在列表中,并在方法之一返回有效响应时立即返回?
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
答案 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
用于维护评估的惰性(不要评估超过必要的)