我有以下Ruby代码(Ruby 2.1.2):
x = false
y = true
!(x || y)
它会抛出一个
NameError: undefined local variable or method ` y' for main:Object
但是,此行有效
x = true
y = false
!(x || y)
=> false
我可以解释一下,因为x
已经是真的,因此y
未被评估。
现在它变得有趣了。我写的时候
x = false
y = true
!(x||y)
=> false
一切都按预期工作。但有人可以解释一下,为什么我要删除x || y
中的两个空格?
答案 0 :(得分:3)
您的表达式包含一个特殊的空白字符,可能是non-breaking space:
!(x || y)
# ^
# |
# here
错误消息也显示出来:
NameError: undefined local variable or method ' y' for main:Object
# ^
# |
# here