Ruby silenciosamente concatena literais de string adjacentes

Dado este código,

a = [ "Hello" "world!" ]
p a
.size

qual será a saída?

Sua resposta imediata provavelmente será “2”. (A menos que você tenha prestado atenção ao título deste protocolo.) No entanto, será “1”. Vá em frente e experimente no irb. Eu vou esperar.

O analisador Ruby concatena automaticamente os literais de string adjacentes. Eles não precisam ter o mesmo tipo de aspas e a interpolação ainda é aplicada.

p "Hello " 'world!'
s
= 'world'
p
"Hello " "#{s}!"

Este é um comportamento documentado para o analisador Ruby, o que significa que ele nem mesmo gerará um aviso.