整洁的红宝石返回失败的方式或在函数调用后继续

时间:2013-06-06 14:04:33

标签: ruby refactoring

我经常使用以下性质的代码

ret = function_call( arguments )
return -1  if ret == -1

ret = another_function_call( arguments2 )
return -1 if ret == -1

... pattern repeated several times

等一个接一个。我想知道如果在函数调用周围返回-1 = ret == 1,如果函数返回-1或者继续,则返回-1时,是否还有另一种包装返回-1的方法

2 个答案:

答案 0 :(得分:0)

有点干吗?像

这样的东西
def call_func(_method, arguments)
  raise "your exception" if send(_method, arguments) == -1
end

call_func(:function_call, arguments)
call_func(:another_function_call, arguments2)

答案 1 :(得分:0)

return_minus_one_on_one = Proc.new do |method_name, arguments|
  return -1 if send(method_name, arguments) == 1
end

return_minus_one_on_one.call("function_call", arguments)
return_minus_one_on_one.call("function_call2", arguments)