Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 为什么`(var | |=true)=false`抛出语法错误?_Ruby_Variable Assignment - Fatal编程技术网

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