Je recherche un meilleur moyen de fusionner des variables dans une chaîne, en Ruby.
Par exemple, si la chaîne est quelque chose comme:
« Le animal
action
la second_animal
»
Et j'ai des variables pour animal
, action
et second_animal
, quelle est la manière préférée de mettre ces variables dans la chaîne?
Vous pouvez utiliser une mise en forme de type sprintf pour injecter des valeurs dans la chaîne. Pour cela, la chaîne doit inclure des espaces réservés. Mettez vos arguments dans un tableau et utilisez l'une de ces méthodes: (Pour plus d'informations, consultez la documentation de Kernel :: sprintf .)
Vous pouvez même spécifier explicitement le numéro d'argument et les mélanger:
Ou spécifiez l'argument à l'aide de clés de hachage:
Notez que vous devez fournir une valeur pour tous les arguments à l'
%
opérateur. Par exemple, vous ne pouvez pas éviter de définiranimal
.la source
J'utiliserais le
#{}
constructeur, comme indiqué par les autres réponses. Je tiens également à souligner qu'il y a ici une vraie subtilité à surveiller ici:Bien que les chaînes puissent être créées avec des guillemets simples (comme le démontrent les variables
first_name
etlast_name
, le#{}
constructeur ne peut être utilisé que dans les chaînes avec des guillemets doubles.la source
est une autre façon de le faire.
la source
C'est ce qu'on appelle l'interpolation de chaîne, et vous le faites comme ceci:
Important: cela ne fonctionnera que lorsque la chaîne est entre guillemets doubles ("").
Exemple de code qui ne fonctionnera pas comme prévu:
la source
Le système de modèles ERB standard peut fonctionner pour votre scénario.
la source
Vous pouvez l'utiliser avec vos variables locales, comme ceci:
@animal = "Dog"
@action = "licks"
@second_animal = "Bird"
"The #{@animal} #{@action} the #{@second_animal}"
le résultat serait: "Le chien lèche l' oiseau "
la source