web-dev-qa-db-fra.com

Ruby affiche le contenu d'un tableau sous forme de chaîne séparée par des virgules Ruby

Existe-t-il une méthode plus correcte pour afficher le contenu d'un tableau sous forme de chaîne délimitée par des virgules

@emails = ["[email protected]", "[email protected]", "[email protected]"]

@emails * ","

=> "[email protected]", "[email protected]", "[email protected]"

Cela fonctionne mais je suis sûr qu'il doit y avoir une solution plus élégante.

72
chell

Avez-vous essayé ceci:

@emails.join(",")
173
Henrik

Bien que l'OP et de nombreuses réponses impliquent que le tableau a toujours du contenu, je me trouve parfois dans l'obligation de rejoindre une liste pouvant contenir des éléments "vides" (généralement pour concaténer des données pour une interface utilisateur).

Voici une petite "progression" de la façon dont différentes approches traitent un tel tableau "imparfait" de chaînes:

['a','b','',nil].join(',') # => "a,b,," 
['a','b','',nil].compact.join(',') # => "a,b,"
['a','b','',nil].compact.reject(&:empty?).join(',') # => "a,b"
['a','b','',nil].reject(&:blank?).join(',') # Rails only

Le dernier étant mon approche préférée (Rails).

8
Jon Kern

Je viens de faire quelque chose de similaire dans un modèle ERB en utilisant AllowedUsers <%= _allowed_users.join(" ") %>. Ce n’est peut-être pas aussi élégant que vous le cherchiez, mais c’est la même implémentation que celle que j’ai vue dans plusieurs langues, ce qui peut être un avantage en termes de lisibilité.

2
Fraq