1. ホーム
  2. ruby

[解決済み] Rubyの帰着点とは?

2023-06-19 14:49:24

質問

とはどのような違いがあるのでしょうか? return のように変数を入れるだけと、以下のように

ノーリターン

def write_code(number_of_errors)
  if number_of_errors > 1
     mood = "Ask me later"
  else
     mood = "No Problem"
  end  
  mood
end

戻る

def write_code(number_of_errors)
  if number_of_errors > 1
    mood =  "Ask me later"
  else
    mood = puts "No Problem"
  end  
  return mood
end

どのように解決するのですか?

return を使用すると、早期にブレイクアウトすることができます。

def write_code(number_of_errors)
  return "No problem" if number_of_errors == 0
  badness = compute_badness(number_of_errors)
  "WHAT?!  Badness = #{badness}."
end

もし number_of_errors == 0 であれば "No problem" はすぐに返されます。 しかし、メソッドの最後では、あなたが観察したように、それは不要です。


編集します。 ということを示すために return が即座に終了することを示すために、この関数を考えてみましょう。

def last_name(name)
  return nil unless name
  name.split(/\s+/)[-1]
end

としてこの関数を呼び出すと last_name("Antal S-Z") として呼び出すと "S-Z" . もし、これを last_name(nil) と呼ぶと nil . もし return はしなかった が即座に終了しなかった場合、それは nil.split(/\s+/)[-1] を実行しようとしますが、これはエラーを投げるでしょう。