如果/否则,有没有更有效的方法来做这件事



有更好或更有效的方法吗?

if not params[:date]
   @date = Date.today.to_s
else
  @date = params[:date]     
end
@date = params[:date] || Date.today

如果你想让Date.today成为一个字符串,那么按照注释做Date.today.to_s:)

我会这样做(我假设这是在Rails中):

@date = params[:date].presence || Date.today.to_s

presence方法检查params[:date]是否不是nil且不为空,然后返回值,因此它通常比只检查nil更安全。

正如The Tin Man所指出的,如果你不在Rails中,并且不想需要active_support,你可以对Object类进行猴子补丁:

class Object
  def blank?
    respond_to?(:empty?) ? empty? : !self
  end
  def present?
    !blank?
  end
  def presence
    self if present?
  end
end

我发现这三种方法在日常Ruby编码中非常有用。

最新更新