Ruby: Return 如果方法 returns 是一个非零值

Ruby: Return if method returns a non-nil value

在 Ruby 中有 better/cleaner 方法吗?

def my_method(x, y)
  return error if (error = validate(x, y))
  # do something else
end

我在其他地方调用了 #validate,所以为了保持干爽,我有 return 错误消息。

另一种写法是:

 def my_method(x, y)
    unless validate(x, y)
        # do something else
    end
  end

这将 return 验证它是否 return 的答案。

如果输入错误时validate returns错误,否则nil,那么你可以这样做:

def my_method(x, y)
  validate(x, y) or # do something else
end

这个更明确、更易读的版本有什么问题?

def my_method(x, y)
  error = validate(x, y)

  if error
    error
  else
    # do something else
  end
end

IMO 编写尽可能短的代码没有任何好处。您应该始终以编写最易读和最易理解的代码为目标。