我在维基百科找到了这个代码块,作为在Ruby中作为quine(打印自己的程序)的例子。了解ruby quine
puts <<2*2,2
puts <<2*2,2
2
但是,我不明白它的工作原理。特别是,我不明白的是,当我删除的最后一行,我得到这个错误:
syntax error, unexpected $end, expecting tSTRING_CONTENT or tSTRING_DBEG or tSTRING_DVAR or tSTRING_END
在这些线路会发生什么?
但是,如果字符串的结束标记是“<”那么它不应该是'2 * 2,2'序列,并且在最后一行中使用相同的序列来结束它? – SasQ
<< <<的优先级比'*'更紧,所以'<< 2 * 2'是“以下以2结尾的文档所代表的字符串乘以2”而不是“由以下代表的字符串2 * 2在这里终止文件。“ –