Ruby виводить вміст масиву як рядок, відокремлений комами


79

Чи існує більш правильний спосіб вивести вміст масиву як рядок, розділений комами

@emails = ["joe@example.com", "Peter@example.com", "alice@example.com"]

@emails * ","

=> "joe@example.com", "Peter@example.com", "alice@example.com"

Це працює, але я впевнений, що має бути більш елегантне рішення.


9
Власне, результат буде"joe@example.com,Peter@example.com,alice@example.com"
Андре Фігейредо

3
Я розгублений: у чому не елегантність array_name * ","?
М. Джастін

Відповіді:



12

Хоча OP та багато відповідей натякають на те, що масив завжди має вміст, іноді я виявляю необхідність приєднатись до списку, який може містити "порожні" елементи (як правило, для об'єднання даних для інтерфейсу користувача).

Ось невелика "прогресія" того, як різні підходи обробляють такий "недосконалий" масив рядків:

['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

Останній - це мій улюблений (Rails) підхід.


2

Мені просто довелося зробити щось подібне в шаблоні ERB, використовуючи AllowedUsers <%= _allowed_users.join(" ") %>. Це може бути не настільки елегантно, як ви шукали, але це те саме впровадження, яке я бачив на кількох мовах, так що це може бути виграшем для читабельності.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.