Estou procurando uma maneira melhor de mesclar variáveis em uma string, em Ruby.
Por exemplo, se a string for algo como:
"O animal
action
o second_animal
"
E eu tenho variáveis para animal
, action
e second_animal
qual é a maneira preferida de colocar essas variáveis na string?
Você pode usar a formatação semelhante a sprintf para injetar valores na string. Para isso, a string deve incluir marcadores de posição. Coloque seus argumentos em uma matriz e use uma das seguintes maneiras: (Para obter mais informações, consulte a documentação de Kernel :: sprintf .)
Você pode até especificar explicitamente o número do argumento e embaralhá-los:
Ou especifique o argumento usando chaves hash:
Observe que você deve fornecer um valor para todos os argumentos para o
%
operador. Por exemplo, você não pode evitar definiranimal
.fonte
Eu usaria o
#{}
construtor, conforme declarado pelas outras respostas. Também quero salientar que há aqui uma sutileza real a ser observada:Embora as strings possam ser criadas com aspas simples (conforme demonstrado pelas variáveis
first_name
elast_name
, o#{}
construtor só pode ser usado em strings com aspas duplas.fonte
é outra maneira de fazer isso.
fonte
Isso é chamado de interpolação de string, e você faz assim:
Importante: só funcionará quando a string estiver entre aspas duplas ("").
Exemplo de código que não funcionará como você esperava:
fonte
O sistema de modelos ERB padrão pode funcionar para o seu cenário.
fonte
Você pode usá-lo com suas variáveis locais, assim:
@animal = "Dog"
@action = "licks"
@second_animal = "Bird"
"The #{@animal} #{@action} the #{@second_animal}"
a saída seria: "O cachorro lambe o pássaro "
fonte