Wie Codes zu verbessern, dass die Zitate alle array-Elemente mit ` " und gibt eine Zeichenfolge zurück, die alle diese notiert und durch Komma getrennte Elemente?
Ich bin mit Schienen 3.2.2, und ich möchte zitieren, die alle array-Elemente mit '
und geben eine Zeichenfolge zurück, die alle diese notiert und durch Komma getrennte Elemente. In dieser Zeit bin ich mit
['a', 'b', 'c'].collect {|x| "'#{x}'"}.join(", ")
# => "'a', 'b', 'c'"
aber ich glaube ich kann verbessern Sie den obigen code (vielleicht mithilfe eines mir unbekannten Ruby-Methode, wenn es vorhanden ist). Ist es möglich?
- Was haben Sie scheint gut zu mir.
- Es gibt nichts zu optimieren, bu Sie können Aliase:
map
stattcollect
und*
stattjoin
wenn Sie hungern, um Ihren code kleiner:%w[a b c].map{|x|"'#{x}'"}*', '
. - Was passiert, wenn einer der strings im array enthält eine
'
von selbst, z.B.["a", "b'cd"]
? - Was Sie haben, ist gut. Auch dies ist pure ruby. Es gibt nichts "Schienen" über es.
- Nur - Ops!
- Vielleicht solltest du konvertieren, die auf eine Antwort um diese Frage beantworten?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Benutze ich
Hier ist die erweiterte version:
Können Sie ersetzen
collect
mit seinem aliasmap
und.join
mit den entsprechenden*
. Schließlich können Sie mit die Tastenkombination für das schreiben ein array von strings,%w(...)
, und Sie können verwenden Sie einfache Anführungszeichen für das argument der.join
/*
da es nicht die Verwendung von string-interpolation (auch wenn es vielleicht fragwürdig ist, wenn es besser wenn es zur Leistung kommt).Scheint es, gibt es keine performance-Unterschied zwischen dieser version und das original, sondern, dass Sigurd ' s version besser:
Code für benchmark: