本文へスキップ
BecomeCoder

Rubyコース · 第5章 メソッド · レッスン22

引数と戻り値 ― returnで早めに返す

ブラウザで完結

導入

メソッドには複数の引数を渡したり、途中で処理を打ち切って値を返したりしたいことがあります。return を明示的に使う場面を見ていきましょう。

説明

return 値 と書くと、その時点でメソッドを終了し、指定した値を戻り値にします。

def multiply(a, b)
  result = a * b
  return result
end

puts multiply(4, 5)

def square(n)
  n * n
end
x = square(6)
puts x

return は主に「条件によって早めにメソッドを抜けたいとき」に使います。最後の式がそのまま戻り値になる Ruby では、multiply のように最後の行が result だけならわざわざ return を書かなくても同じ結果になります(両方の書き方を知っておくと読みやすくなります)。

やってみよう

return を使ったメソッドと使わないメソッドを両方書いて、結果が同じになることを確認しましょう。条件によって早く return するメソッドも作ってみてください(例:負の数なら return 0)。

演習

abs_value(n) というメソッドを定義し、n が負の数(n < 0)なら return -n、そうでなければ n を返すようにしてください。puts abs_value(-5) の結果(5)を表示してください。

ヒント1を見る

def abs_value(n) return -n if n < 0; n end のように書けます。

ヒント2を見る

後置ifと組み合わせると短く書けます。

実際に動かしてみよう

下のエディタにRubyを書いて「実行」を押すと、学習用シミュレータが puts / print / p の出力を表示します(本物のRubyではなく、教材の範囲を再現した軽量な自作エンジンです)。配列・ハッシュ・ブロック(each/map/select)・メソッド・クラス・モジュール・例外なども動きます。本文の例を書き換えて動かしてみましょう(gem・Rails・ファイル入出力など一部の機能は対象外です。文字列を伸ばすときは str << も可能ですが、変数に反映されるのは str += です)。

Ruby — ブラウザ内で実行(学習用シミュレータ)

Rubyの教材サブセットを動かす学習用シミュレータを読み込みます(本物のRubyではなく、動きを再現した軽量な自作エンジンです)。
スクロールして表示された時点でも自動で読み込まれます。