如果/ else有更有效的方法吗?

时间:2013-06-23 17:24:19

标签: ruby

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

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

2 个答案:

答案 0 :(得分:8)

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

如果你想让Date.today成为一个字符串,那么按照评论Date.today.to_s进行操作:)

答案 1 :(得分:0)

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

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

存在方法检查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编码中非常有用。