Programming from 30

自分の備忘録が、誰かの為になれば・・

わからないまま進んだ、戻り値とnil。

戻り値とnilとは一体何?

参考書やWEBサイトでちらほら見かける戻り値nil。わからないままだと気持ちが悪いのでまとめてみました。

戻り値とは

最後の式を実行した結果。全てのメソッドに戻り値は存在する!

nilとは

「全く何もない」ことを表すRubyの「値」

文字で表してもよくわかりませんが、以下の画像をまず見て下さい。 f:id:tsubasa0105:20181103004714p:plain

今の今まで二段に別れて結果が出力されている事の意味を理解していませんでした。
まず、赤い汚い文字(100均のペン)で「戻り値」と書きました!「10」と「nil」という結果が出ています!上にも書きましたが、最後の式を実行した結果が帰ってきています!「10」はわかりますが、なぜputs ' a' の戻り値が「nil」なのか?!
答えがRubyの公式サイトにあり、

=> nilは何でしょうか? これはこのコマンドの評価結果です。 putsは必ずnilを返します。

「puts」は「nil」を返すそうです。「a」はただ出力されただけのもの。素人が深入りしすぎて推測するより、そういう仕組みになっているんだと思った方が良さそう。 因みにメソッドで見てみると

①def calc(a,b)
  a + b
end

calc(5,5)
=> 10


②def output
  puts 'a'
end

output
a
=> nil

メソッド①では最後の式を実行した結果の「10」が結果で、メソッド②では上でもお話ししている通り「a」を出力しただけで、戻る値が元々決められているnilが返ります!

ただ、戻り値をreturnで指定できる

def get_value
'あ'
return 'い'
'う'
end

return
"い"

まだまだわからない事は多そうです。何かあればご指摘いただけると幸いです。