&&使用三元运算符

问题描述

| 嘿,当我偶然发现这段代码时,我遵循的是Michael Hartl的教程。 有没有人知道三元运算符使用的“用户”是什么? 这是代码
def self.authenticate(email,submitted_password)
  user = find_by_email(email)
  user && user.has_password?(submitted_password) ? user : nil
end
    

解决方法

        
&&
是逻辑
and
,只是它的优先级高于
and
。因此,该语句仅说明如果用户不是nil并且用户具有该密码,则返回user,否则返回nil。 在Ruby中,逻辑的第二部分,如果第一部分为false,则不执行。因此,这里的目的是确保在调用
has_password?
之前有一个用户,从而防止在
nil
上调用
has_password?
的错误。另一种方法是使用
try
,例如:
user.try(:has_password?,submitted_password) ? user : nil
    ,        它仅在应用方法
has_password?
之前检查
user
是否具有任何值。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...