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