鉴于a
未定义,以下内容看起来很好:
a + b + blah
# => NameError: undefined local variable or method `a' for main:Object
删除空间似乎很重要:
a + b +blah
# => syntax error, unexpected unary+, expecting keyword_do or '{' or '('
这是什么意思,为什么只是删除一个空格就会发生这种情况?这里+
没有正常处理吗?如果我定义a
和b
,则会变为:
a, b = 1, 1
a + b +blah
# => NameError: undefined local variable or method `blah' for main:Object
再次看起来+
被正确对待。
答案 0 :(得分:8)
一元+@
运算符本身就是一个有效运算符(接受一个操作数并返回其值 - 例如。+4
返回4
)。不要与对两个操作数有效的加法运算符+
混淆。
此外,它优先于普通的+
加法运算符。
因此,+c
中a + b +c
中的a + b +c
被解析为a + b c
的等价物,这是无效的,因为Ruby无法确定+c
是否()
1}}是普通方法参数{}
或块bind
。