いてづきブログ

情シスでやってみたことの備忘録

ぼっち演算子

ある日時フィールドstartについて、現在時刻より前かどうかを判定する必要があったが、そのフィールドがnilになる場合がある。


とりあえず正直に書いてみた。

def past?
  if start.present?
    start < Time.current
  else
    false
  end
end

これでプルリク出したらレビューでstart&.< Time.currentで書けるよと教えてもらった。

これはぼっち演算子と言われるもので「xxx が nil でないときにメソッドyyyを呼び出す」とのこと。
Rubyで使われる記号の意味(正規表現の複雑な記号は除く) (Ruby 2.5.0)

一応の注意点としてぼっち演算子で書いた場合、startがnilだとstart&.< Time.currentの返り値はfalseではなくnilになる。
しかし、Rubyは「false」と「nil」だけが false であとは全部 trueなので基本的には問題はなさそう。

冗長なコードが短くなってスッキリ。

def past?
  start&.< Time.current
end