2019/09/16_return?break?(Ruby)
まえがき
今日もrubyのアルゴリズム問題を解きました。
解いてて「ここはreturn
だっけ?break
だっけ?」となったので、両者について簡単にまとめます。
return
return
はメソッドに対して使用します。
機能としては
- メソッドを途中で終了させる
- メソッドの返り値を指定する
です。
break
break
は繰り返し処理に対して使用します。
機能としては
- 繰り返し処理から脱出する(終了させる)
- 対象となる繰り返し処理は以下のとおり
- while
- until
- for
- イテレーター (ここにeachが含まれる)
です。
例題
明日、火曜日は燃えるゴミの日で、捨てるの忘れないようにしなきゃなー。と思っているので、こんな例題を考えました。
- システムの説明
- 配列をゴミ箱(
garbage_can
)に見立ててます。 - 配列(ゴミ箱)の上から何番目に燃えるゴミがあるか調べるシステムです。
- 明日捨てなきゃいけない、燃えるゴミを探します。
- 配列をゴミ箱(
- 問題
- ( )の中に入るのは、return? break?
↓例題(コード)↓
# メソッドの定義 def search_garbage_can(garbage_can, target_garbage) garbage_can.each_with_index do |garbage, i| if garbage == target_garbage puts "#{garbage}は、上から#{i + 1}番目に入ってます。" ( return? break? ) end end puts "それはゴミ箱の中に入ってません。" end # 配列(ゴミ箱)の定義 garbage_can = ["燃えないゴミ","資源ゴミ","粗大ゴミ","燃えるゴミ"] # 調べたいゴミ(燃えるゴミ)の定義 target_garbage = "燃えるゴミ" # システムの実行 search_garbage_can(garbage_can, target_garbage)
- 答え
return
- 解説
break
にしてしまうと、each_with_index
からしか抜け出せないため、以下の2つが表示されてしまう。- 繰り返し処理内の「燃えるゴミは上から4番目です。」
- 繰り返し処理外だけどメソッド内の「それはゴミ箱の中に入ってません。」
- したがって、
search_garbage_can
メソッドを終了させなければいけないので、return
を使います。