为什么这样可以正常工作:

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

最佳答案

看起来Ruby正在将后者解析为对#reverse?的潜在调用。当以其他方式切换时,这种歧义将被消除。在条件周围加上括号应使它可以同时使用。

关于ruby - 将x与x.method进行比较时出现古怪的语法错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14270622/

10-13 02:10