コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

Rubyでメソッドの最終行にif修飾子(後置if)を使って条件に当てはまらない場合はnil

表題の通りシリーズ、直感的にそうなるんじゃね?と思っていても試したことなかったのでメモ

環境

$ ruby -v
ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-darwin18]

test.rb として以下のファイルを用意する

def one_of_true(target)
  true if target == 1
end

pp one_of_true(1)
pp one_of_true(0)

下記のような結果になる

$ ruby test.rb 
true
nil

原理

右辺の条件が成立する時に、左辺の式を評価してその結果を返します。 条件が成立しなければ nil を返します。 - 制御構造 (Ruby 2.5.0) - if修飾子

ということで後置ifの条件式(上で言う右辺)が成立するときは左辺を出すが、そうでないときはnilということ。

メソッド内に記述がないときと同等になるからだ!とかではないので注意。

参考リンク