我在Ruby中有以下奇怪行为:
var1.zero? if var1 = 1
Run Code Online (Sandbox Code Playgroud)
NameError:var1main:Object的未定义局部变量或方法
从另一方面来说,如果我在standard中做同样的事情if,那么所有的工作都可以预期:
if var1 = 1
var1.zero?
end
# => false
Run Code Online (Sandbox Code Playgroud)
任何人都可以描述ifRuby 后缀的工作方式吗?
因为如果我问你
我女儿不可爱吗
你会打扰我
你有女儿吗
在我完成第一句话之前
我的女儿不是可爱吗,这是她的[显示图片]吗?
但是如果我问你
[显示图片]这是我的女儿,她可爱吗?
您可以轻松回应
没有
它将从左到右,首先读取var1.zero?,然后if var1 = 1
var1.zero? if var1 = 1
Run Code Online (Sandbox Code Playgroud)
这就是为什么它会得到var1
NameError:main:Object 的未定义局部变量或方法“var1”
和这里,
if var1 = 1
var1.zero?
end
Run Code Online (Sandbox Code Playgroud)
var1 = 1将创建值为 1 的 var1,因此不会抛出错误。当它执行时var1.zero?.
| 归档时间: |
|
| 查看次数: |
493 次 |
| 最近记录: |