今天我|=
第一次看到它,我试图了解它是如何工作的以及它什么时候有用。
一些实验表明:
var |= nil
# => false
var |= false
# => false
var |= true
# => true
var |= 1
# => true
var |= nil
# => true
var |= false
# => true
var
# => true
在 Github 的 html-pipeline gem 中找到。
def link_to_mentioned_user(login)
result[:mentioned_usernames] |= [login]
url = File.join(base_url, login)
"<a href='#{url}' class='user-mention'>" +
"@#{login}" +
"</a>"
end
我假设它|=
像一个受保护的赋值一样工作||=
,但是将表达式的返回值转换为一个布尔值。
这意味着只要var
是 falsy 或 undefined,表达式就会被计算并且返回值被赋值为一个布尔值。一旦var |= some_truthy_expression
被调用,var
will betrue
和进一步调用var |= expression_will_not_be_called
将不会评估表达式。
- 它是这样工作的吗,在哪里可以找到
|=
Ruby 文档? - 什么时候可以
|=
派上用场?