Ruby等值/条件赋值运算符(|| =)

例子

Ruby有一个或-等于运算符,其允许值将被分配给一个变量当且仅当该变量计算结果为nil或false。

 ||= # 这是实现这一目标的运营商。

该运算符的双管道表示或,等号表示分配值。您可能会认为它代表着这样的东西:

 x = x || y

上面的例子是不正确的。“等于”运算符实际上表示以下内容:

 x || x = y

如果x计算结果为nil或false然后x被分配的值y,并保持不变,否则。

这是等于运算符的实际用例。假设您有一部分代码希望发送电子邮件给用户。如果出于某种原因没有此用户的电子邮件,您该怎么办。您可能会这样写:

 if user_email.nil?
    user_email = "error@yourapp.com"
 end

使用“等于”运算符,我们可以剪切整段代码,从而提供干净,清晰的控件和功能。

 user_email ||= "error@yourapp.com"

在false有效值为的情况下,必须注意不要意外覆盖它:

has_been_run = false
has_been_run ||= true
#=> true

has_been_run = false
has_been_run = true if has_been_run.nil?
#=> false