銀行員からのRailsエンジニア

銀行員からのRailsエンジニア

銀行員から転身したサービス作りが大好きなRailsエンジニアのブログです。個人で開発したサービスをいくつか運営しており、今も新しいサービスを開発しています。転職して日々感じていること、個人開発サービス運営のことなどを等身大で書いていきます。

【Ruby】後置ifが末尾にあるメソッドの返り値はなに...?

業務で少しハマったことをTwitterでつぶやいてみました。

割とバラけていますね。

flag が true であればもちろん Good night が答えになるのですが、これはどうなるでしょうか





(↓に答え)





答えはそれ以外で「nil」になります。

それ以外を選ばれた方、さすがでした!(nil を選択肢に入れなかったのがちょっと卑怯だったかも)

後置if で false になる時の返り値についてはドキュメントに記載がありました。

右辺の条件が成立する時に、左辺の式を評価してその結果を返します。 条件が成立しなければ nil を返します。

制御構造 (Ruby 2.6.0) の if 修飾子 の部分です。

なるほど。



また、こちらはどうなるでしょうか。

def greeting(flag)
  'Good evening'
  if flag
    'Good night'
  end
end
p greeting(false) # -> ?





(↓に答え)





こちらも「nil」になります。

if 節の返り値についても、先ほどと同じドキュメントに記載がありました。

if 式は、条件が成立した節(あるいは else 節)の最後に評価し た式の結果を返します。else 節がなくいずれの条件も成り立たなけれ ば nil を返します。

制御構造 (Ruby 2.6.0)

へぇ、そうなるんだ〜。

これを認識していないと予想外のバグを埋め込んでしまうおそれがあるので注意したいですね。

おわり