jas*_*328 2 ruby activerecord ruby-on-rails ruby-on-rails-3
我有一个包含以下代码的方法.
def save_question(content)
question = Question.new
question.content = content
question.save
end
Run Code Online (Sandbox Code Playgroud)
当我在if语句中运行它时
if save_question(content)
puts "Everything is cool"
else
puts "Something went wrong"
end
Run Code Online (Sandbox Code Playgroud)
该方法返回"Everything is cool".但是,如果我将方法更改为此
def save_question(content)
question = Question.new
question.content = content
return false unless question.save
end
Run Code Online (Sandbox Code Playgroud)
然后if语句将返回"Something went wrong".我在这里错过了一些大事吗?我认为save方法返回true,这是,但为什么方法返回false?
你正在修改你的方法,以便它返回,false或者nil也是假的.
你的最后一行现在读了
return false unless question.save
Run Code Online (Sandbox Code Playgroud)
这里没有暗示return true.如果question.save返回true,return false则永远不执行,表达式求值为nil.
可以这样想:你期望这个版本的函数返回什么?
def save_question(content)
if !question.save
return false
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
536 次 |
| 最近记录: |