gpt4 book ai didi

ruby - 为什么 `(var ||= true) = false` 会抛出语法错误?

转载 作者:数据小太阳 更新时间:2023-10-29 08:14:59 26 4
gpt4 key购买 nike

我不明白为什么

(var ||= []) << 1

按预期工作但是

(var ||= true) = false

没有。

谁能解释为什么它不起作用以及这里发生了什么?

最佳答案

a ||= b表现得像 a || a = b .

赋值返回分配的值,即 var = true返回 true .

var ||= true将评估作业 var = true ,因为 var在这一点上是未定义的。如果var已定义,其值为 true , 它将返回 var 的值, 即 true ;如果为假,它将返回 true 的值,即 true .

var ||= []返回 [] ,您的第一个表达式计算为 [] << 1 , 这是合法的。

但是,您的第二个表达式的计算结果为 true = false ,这会引发编译错误。

tl;dr

(var ||= []) << 1(var = []) << 1[] << 1

(var ||= true) = false(var = true) = falsetrue = false

关于ruby - 为什么 `(var ||= true) = false` 会抛出语法错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8970561/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com