gpt4 book ai didi

ruby - || 是否即使第一个参数为真,运算符也会评估第二个参数?

转载 作者:数据小太阳 更新时间:2023-10-29 06:45:45 25 4
gpt4 key购买 nike

我正在尝试计算表达式 (a=10) || (rr=20) 未定义 rr 变量

因此在评估前一个表达式返回之前在 ruby​​ 控制台中键入 rr

rr
NameError: undefined local variable or method `rr' for main:Object
from (irb):1
from :0

当我编写表达式 (a=10) || (rr=20) 它返回 10,然后当我写 rr 时它说 nil

(a=10) || (rr=20)
rr # => nil

那么,为什么会这样呢?仅当 || 的第二个参数时,不应定义 rr运算符被评估,这不应该基于文档?

最佳答案

发生这种情况是因为 ruby​​ 解释器定义 一个变量,当它看到对它的赋值时(但在它执行实际的代码行之前)。您可以阅读更多相关信息 in this answer .

bool OR (||) 表达式如果不是 nil 且不是 false,则将求值为左侧表达式的值,否则|| 将计算右侧表达式的值。

在您的示例中,ruby 解释器看到对 arr 的赋值(但它尚未执行此行),并初始化(定义、创建)arrnil。然后它执行 || 表达式。在此 || 表达式中,a 被分配给 10 并返回 10r=20 未计算,rr 未更改(仍为 nil)。这就是为什么在下一行中 rrnil 的原因。

关于ruby - || 是否即使第一个参数为真,运算符也会评估第二个参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9163979/

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