2

次のコードを含むメソッドがあります。

def save_question(content)

  question = Question.new

  question.content = content

  question.save

end

これをif文で実行すると

if save_question(content)
  puts "Everything is cool"
else
  puts "Something went wrong"
end

メソッドは を返します"Everything is cool"。ただし、メソッドをこれに変更すると

def save_question(content)

  question = Question.new

  question.content = content

  return false unless question.save

end

その後、if ステートメントは を返し"Something went wrong"ます。ここで何か大きなものを見逃していますか?save メソッドは true を返すと思っていたのですが、なぜメソッドが false を返すのでしょうか?

4

1 に答える 1

6

falseまたはを返すようにメソッドを変更していますがnil、これも偽です。

あなたの最後の行は今読む

return false unless question.save

ここには暗黙的なものはありませんreturn truequestion.savetrue を返す場合、はreturn false実行されず、式は に評価されnilます。

このように考えてみてください: このバージョンの関数は何を返すと思いますか?

def save_question(content)
  if !question.save
    return false
  end
end
于 2013-05-23T17:02:18.983 に答える