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

您正在修改您的方法以使其返回falseor 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
于 2013-05-23T17:02:18.983 回答