Gibt es eine korrektere Möglichkeit, den Inhalt eines Arrays als durch Kommas getrennte Zeichenfolge auszugeben?
@emails = ["[email protected]", "[email protected]", "[email protected]"]
@emails * ","
=> "[email protected]", "[email protected]", "[email protected]"
Das funktioniert, aber ich bin mir sicher, dass es eine elegantere Lösung geben muss.
ruby
arrays
ruby-on-rails-3
chell
quelle
quelle
"[email protected],[email protected],[email protected]"
array_name * ","
?Antworten:
Haben Sie das versucht:
@emails.join(",")
quelle
join
ist ein Alias für*
, also wiederholt dies nur die Frage des OP.join
aber sicher leichter zu verstehen.Obwohl das OP und viele Antworten implizieren, dass das Array immer Inhalt enthält, muss ich manchmal einer Liste beitreten, die "leere" Elemente enthalten kann (normalerweise zum Verketten von Daten für eine Benutzeroberfläche).
Hier ist ein kleiner "Fortschritt", wie unterschiedliche Ansätze mit solch einem "unvollkommenen" Array von Zeichenfolgen umgehen:
['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
Der letzte ist mein Lieblingsansatz (Rails).
quelle
Ich musste nur etwas Ähnliches in einer ERB-Vorlage mit tun
AllowedUsers <%= _allowed_users.join(" ") %>
. Es ist vielleicht nicht so elegant, wie Sie es gesucht haben, aber es ist dieselbe Implementierung, die ich in mehreren Sprachen gesehen habe. Das könnte also ein Gewinn für die Lesbarkeit sein.quelle