Estoy buscando una mejor manera de fusionar variables en una cadena, en Ruby.
Por ejemplo, si la cadena es algo como:
"El animal
action
del second_animal
"
Y tengo variables para animal
, action
y second_animal
, ¿cuál es la forma preferida de poner esas variables en la cadena?
Puede usar un formato similar a sprintf para inyectar valores en la cadena. Para eso, la cadena debe incluir marcadores de posición. Coloque sus argumentos en una matriz y use una de estas formas: (Para obtener más información, consulte la documentación de Kernel :: sprintf ).
Incluso puede especificar explícitamente el número de argumento y barajarlo:
O especifique el argumento usando claves hash:
Tenga en cuenta que debe proporcionar un valor para todos los argumentos al
%
operador. Por ejemplo, no puede evitar definiranimal
.fuente
Usaría el
#{}
constructor, como se indica en las otras respuestas. También quiero señalar que hay una verdadera sutileza aquí a tener en cuenta aquí:Si bien las cadenas se pueden crear con comillas simples (como lo demuestran las variables
first_name
ylast_name
, el#{}
constructor solo se puede usar en cadenas con comillas dobles.fuente
es otra forma de hacerlo.
fuente
Esto se llama interpolación de cadenas, y lo haces así:
Importante: solo funcionará cuando la cadena esté entre comillas dobles ("").
Ejemplo de código que no funcionará como esperabas:
fuente
El sistema de plantillas ERB estándar puede funcionar para su escenario.
fuente
Puede usarlo con sus variables locales, así:
@animal = "Dog"
@action = "licks"
@second_animal = "Bird"
"The #{@animal} #{@action} the #{@second_animal}"
el resultado sería: "El perro lame al pájaro "
fuente