将x与x.method进行比较时出现奇怪的语法错误

时间:2013-01-11 02:15:58

标签: ruby syntax-error

为什么这样可行:

t="
"+$<.read;puts t.reverse==t ?"YES":"NO"

但是这个:

t="
"+$<.read;puts t==t.reverse ?"YES":"NO"

表示:

A.rb:2: syntax error, unexpected tCHAR, expecting $end
"+$<.read;puts t==t.reverse ?"YES":"NO"
                              ^

我使用ruby 1.9.2p290(2011-07-09)[i386-mingw32] 样本STDIN字符串为XX.\n...\n.XX\n

1 个答案:

答案 0 :(得分:2)

看起来Ruby正在将后者解析为对#reverse?的潜在调用。当以另一种方式切换时,消除了这种模糊性。在条件周围添加括号应该允许它双向进行。