我有一个包含以下代码的方法。
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?
答案 0 :(得分:6)
您正在修改您的方法,以便它返回false
或nil
,这也是假的。
你的最后一行现在是
return false unless question.save
此处没有隐式return true
。如果question.save
返回true,则永远不会执行return false
,并且表达式的计算结果为nil
。
这样想:你期望这个版本的函数返回什么?
def save_question(content)
if !question.save
return false
end
end