我在我正在做的 Rails 教程中看到过这段代码
def access_denied
redirect_to login_path, :notice => "Please log in to continue" and return false
end
在学习 Rails 之前,我对 ruby 进行了大量研究,但我读过的所有书籍都没有涵盖这里发生的这种“并返回 false”语法。我在 rails 语法中找不到任何提及它的地方,是否有人能够提供链接或任何解释来解决这个问题?
我不明白这里需要“和”,因为我认为 ruby 总是会返回最后计算的表达式。
最佳答案
and 只是为了让您能够在与前一条语句相同的行中写入 return false。
相当于这样做:
redirect_to login_path, :notice => "Please log in to continue"
return false
它并不完全相同,因为如果 redirect_to 方法返回不是 nil 或 false< 的东西,它只会返回 false/strong> 但是因为它几乎总是返回既不是 nil 也不是 false 的东西,所以总是执行语句的右侧(和 false被退回)。
Ruby 中的 and 只是 && 的别名,其行为与它完全一样,只有一个区别,它的优先级低于语句的所有其他部分,所以首先它评估它左边的任何东西然后被应用。 Ruby 也有 or,它与 || 相同,但在表达式中具有较低的优先级。
关于ruby-on-rails - rails/ruby "and return false"语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8825396/