記憶の外付けHDD

切実に頭にUSBのコネクターがほしいです。なるべくtype-cでお願いしたいです。(忘れないように、プログラミング学習で学んだことを投稿してます)

2019/09/16_return?break?(Ruby)

まえがき

今日もrubyアルゴリズム問題を解きました。
解いてて「ここはreturnだっけ?breakだっけ?」となったので、両者について簡単にまとめます。

return

returnメソッドに対して使用します。
機能としては

  • メソッドを途中で終了させる
  • メソッドの返り値を指定する

です。

break

break繰り返し処理に対して使用します。 機能としては

  • 繰り返し処理から脱出する(終了させる)
  • 対象となる繰り返し処理は以下のとおり

です。

例題

明日、火曜日は燃えるゴミの日で、捨てるの忘れないようにしなきゃなー。と思っているので、こんな例題を考えました。

  • システムの説明
    • 配列をゴミ箱(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を使います。

参考