逻辑语句中的空格会产生错误

时间:2015-02-11 08:52:41

标签: ruby

我有以下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中的两个空格?

1 个答案:

答案 0 :(得分:3)

您的表达式包含一个特殊的空白字符,可能是non-breaking space

!(x || y)
#     ^
#     |
#   here

错误消息也显示出来:

NameError: undefined local variable or method ' y' for main:Object
#                                              ^
#                                              |
#                                             here