rails/ruby​​"并返回false"语法

Mik*_*rth 11 ruby ruby-on-rails

我在轨道教程中看到过这段代码

def access_denied
  redirect_to login_path, :notice => "Please log in to continue" and return false
end
Run Code Online (Sandbox Code Playgroud)

在学习rails之前,我做了大量的ruby研究,我读过的书都没有涵盖这里的"返回错误"语法.我在rails语法中找不到任何提及它,是否有人能够提供链接或任何解释清除它?

我不明白这里需要"和",因为我认为ruby总会返回最后一个评估的表达式.

Mau*_*res 22

有你能写的唯一的回报假在同一行此前的说法.

它相当于这样做:

redirect_to login_path, :notice => "Please log in to continue"
return false
Run Code Online (Sandbox Code Playgroud)

它不完全相同,因为如果redirect_to方法返回的内容不是nilfalse,那么它只会返回false ,但是它几乎总是返回一些不是nil也不是false的东西,那么语句的右边是总是执行(并返回false).

在Ruby中仅仅是一个别名&&和行为完全像它只有一个区别,它具有比语句的所有其他部分较低的优先级,所以首先它的计算结果无论是在它的左边,然后得到应用.Ruby也有或者||相同 但表达式的优先级较低.

  • 如果你想要添加一个总是执行的返回但你不确信第一个表达式总是返回非假,你也可以使用分号而不是`和`,如下所示:`do_something参数,论点; 返回false` (2认同)