Ruby 为什么`(var | |=true)=false`抛出语法错误?
我不明白为什么Ruby 为什么`(var | |=true)=false`抛出语法错误?,ruby,variable-assignment,Ruby,Variable Assignment,我不明白为什么 (var ||= []) << 1 没有 有人能解释一下为什么它不起作用以及这里发生了什么吗?a | |=b的行为类似于a | | a=b 赋值返回赋值,即var=true返回true var | |=true将计算为赋值var=true,因为var在该点未定义。如果定义了var,且其值为true,它将返回var的值,即true;如果为false,它将返回值true,即true var | |=[]返回[],您的第一个表达式计算为[]。在第一种情况下,您有一个对象,
(var ||= []) << 1
没有
有人能解释一下为什么它不起作用以及这里发生了什么吗?
a | |=b
的行为类似于a | | a=b
赋值返回赋值,即var=true
返回true
var | |=true
将计算为赋值var=true
,因为var
在该点未定义。如果定义了var
,且其值为true
,它将返回var
的值,即true
;如果为false,它将返回值true
,即true
var | |=[]
返回[]
,您的第一个表达式计算为[]。在第一种情况下,您有一个对象,您使用它的谢谢这个家伙:)@JúlioSantos一些正确解释它的源代码。你在评论中发布的rubyinside链接。
(var ||= true) = false