Ich habe diesen Code-Block auf Wikipedia als ein Beispiel für eine Quine (Programm, das sich selbst ausdruckt) in Ruby gefunden.Verständnis ruby quine
puts <<2*2,2
puts <<2*2,2
2
Allerdings verstehe ich nicht, wie es funktioniert. Vor allem, was ich nicht bekommen, ist, dass, wenn ich die letzte Zeile zu entfernen, ich diesen Fehler:
syntax error, unexpected $end, expecting tSTRING_CONTENT or tSTRING_DBEG or tSTRING_DVAR or tSTRING_END
Was in diesen Zeilen geschieht?
Aber wenn die Endmarke der Zeichenfolge ist das "etwas" nach '< <', sollte es nicht '2 * 2,2' Sequenz sein, und die gleiche Sequenz in der letzten Zeile, um es zu beenden? – SasQ
Der Vorrang von '<<' ist enger als '*', so dass '<< 2 * 2'" die Zeichenfolge ist, die durch das folgende 2-terminierte Dokument repräsentiert wird, multipliziert mit 2 "statt" der durch folgende Zeichenfolge 2 * 2-terminiertes hier Dokument. " –