基于我在Ruby中读到的关于||=
运算符的内容,我希望以下代码行应该将示例中的变量a
(一个尚未分配的变量)分配给{ {1}}。
5
仅仅评估a |= "-----n-".index /n/
会给你"-----n-".index /n/
。
但是,执行上述行后,5
设置为a
。
以下内容将true
设置为b
,而我希望false
应为b
:
nil
你可以向我解释一下吗?
答案 0 :(得分:2)
这是因为a |= expr
被a = a | expr
所取代。在右侧,a
最初为nil
。
该表达式等同于a = nil | expr
,如果参数为非零,则返回true(有关详细信息,请参阅documentation on nil#|)。你可能打算写a ||= expr
,这是a = a || expr
。
答案 1 :(得分:1)
||=
和|=
是不同的运营商。你谈论一个,但使用另一个。注意!
a ||= "-----n-".index(/n/) # => 5
b ||= "-----n-".index(/o/) # => nil
c |= "-----n-".index(/n/) # => true
d |= "-----n-".index(/o/) # => false