我在維基百科找到了這個代碼塊,作爲在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在這裏終止文件。「 –