106 votes

Ruby : Fusion de variables dans une chaîne

Je cherche un meilleur moyen de fusionner les variables en une chaîne, dans Ruby.

Par exemple si la chaîne est quelque chose comme :

"Les animal action les second_animal"

Et j'ai des variables pour animal, action et second_animal, quelle est la façon préférée de mettre ces variables dans la chaîne ?

266voto

Mike Woodhouse Points 27748

La façon idiomatique est d'écrire quelque chose comme ceci :

"The #{animal} #{action} the #{second_animal}"

Notez les guillemets doubles (") entourant la chaîne : c'est le déclencheur pour Ruby d'utiliser sa substitution d'espace réservé intégrée. Vous ne pouvez pas les remplacer par des guillemets simples (') ou la chaîne sera conservée telle quelle.

20voto

Starkers Points 781

J'utiliserais le constructeur #{}, comme indiqué dans les autres réponses. Je tiens également à souligner qu'il y a une vraie subtilité à surveiller ici :

2.0.0p247 :001 > first_name = 'jim'
 => "jim" 
2.0.0p247 :002 > second_name = 'bob'
 => "bob" 
2.0.0p247 :003 > full_name = '#{first_name} #{second_name}'
 => "\#{first_name} \#{second_name}" # not what we expected, expected "jim bob"
2.0.0p247 :004 > full_name = "#{first_name} #{second_name}"
 => "jim bob" #correct, what we expected

Alors que les chaînes peuvent être créées avec des guillemets simples (comme le montrent les variables first_name last_name, le constructeur #{} ne peut être utilisé que dans les chaînes avec des guillemets doubles.

14voto

Andrew Grimm Points 22996
["The", animal, action, "the", second_animal].join(" ")

est une autre façon de le faire.

12voto

sqrcompass Points 583

Ceci s'appelle l'interpolation de chaîne, et vous le faites comme ceci :

"The #{animal} #{action} the #{second_animal}"

Important : il ne fonctionnera que lorsque la chaîne est entre guillemets doubles (" ").

Exemple de code qui ne fonctionnera pas comme prévu :

'The #{animal} #{action} the #{second_animal}'

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X