Kar*_*tle 2 ruby variable-assignment
我不明白为什么
(var ||= []) << 1
Run Code Online (Sandbox Code Playgroud)
按预期工作但是
(var ||= true) = false
Run Code Online (Sandbox Code Playgroud)
没有.
任何人都可以解释为什么它不起作用,这里发生了什么?
Júl*_*tos 12
a ||= b表现得像a || a = b.
赋值返回指定的值,即var = true返回值true.
var ||= true将评估分配var = true,因为var在那时未定义.如果var定义了它的值true,它将返回值var,即true; 如果它是假的,它将返回值true,即true.
var ||= []返回[],并将您的第一个表达式计算为[] << 1,这是合法的.
但是,您的第二个表达式求值为true = false,这会引发编译错误.
TL;博士
(var ||= []) << 1⟺ (var = []) << 1⟺ [] << 1✔
(var ||= true) = false⟺ (var = true) = false⟺ true = false✘该