He encontrado este bloque de código en Wikipedia como un ejemplo de quine (programa que se imprime a sí mismo) en Ruby.Entendiendo ruby quine
puts <<2*2,2
puts <<2*2,2
2
Sin embargo, no entiendo cómo funciona. Sobre todo, lo que no entiendo es que cuando se quita la última línea, me sale este error:
syntax error, unexpected $end, expecting tSTRING_CONTENT or tSTRING_DBEG or tSTRING_DVAR or tSTRING_END
Lo que sucede en esas líneas?
Pero si el marcador final de la cadena es el "algo" después de '< <', ¿no debería ser entonces la secuencia' 2 * 2,2', y la misma secuencia utilizada en la última línea para finalizarla? – SasQ
La precedencia de '<<' es más estricta que '*', por lo que '<< 2 * 2' es" la cadena representada por el siguiente documento de 2 terminados aquí, multiplicado por 2 "en lugar de" la cadena representada por el siguiente 2 * 2-terminó aquí el documento ". –