ruby-string für die hash-Konvertierung
Ich habe einen string wie diesen,
str = "uu@p, xx@m, yy@n, zz@m"
Ich will wissen wie konvertiert den gegebenen string in einen hash. (ich.e meine eigentliche Anforderung ist, wie viele Werte (vor dem @ - Zeichen), haben Sie die m, n und p sind. Ich will nicht zählen, brauche ich einen exakten Wert). Die Ausgabe wäre besser so,
{"m" => ["xx", "zz"], "n" => ["yy"], "p" => ["uu"]}
Helfen kann mir jemand, bitte?
InformationsquelleAutor Mr. Black | 2011-10-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Direkte Kopie/Vergangenheit einer IRB-Sitzung:
Gerne helfen! 🙂 Wenn deine Frage ist ausreichend beantwortet werden, bitte akzeptieren Sie es, damit andere Leute wissen.
Sicher, ich bin mit den block-form
Hash.new
(siehe docs) zu injizieren ein hash, der hat das leere array als default-Wert.InformationsquelleAutor Michael Kohl
Simpler code für ein Neuling 🙂
InformationsquelleAutor Moiz Raja
FP-style:
Wie üblich, die Lösung ist viel kürzer und klarer, wenn Sie greifen, um Facetten kühlen Abstraktionen (keine Notwendigkeit zu installieren, die gesamte Bibliothek, kopieren Sie einfach die spezifischen Methoden, um Ihre Erweiterungen-Modul):
Facets#map_by
=group_by
+map
inject
) funktionell genug für Sie? 😉Ich denke, ich bevorzuge diese für keinen anderen Grund als die Tatsache, dass es sich nicht um den Status zu halten in temporäre Variablen.
Nennen wir es dann "ein anderes FP-Antwort-Stil". Beachten Sie jedoch, dass "h[k] << v" ist kaum funktionsfähig :-p Außerdem, eine typische FP-Rat: don ' T resort zu Falten, wenn es um andere Abstraktionen in der hand (da wir potentiell schreiben können fast alle aufzählbaren Abstraktionen mit Falten: anzeigen/wählen/group_by/partition/max/min/...).
Fair genug über mutierend das array. Über das Stück der Rat, den Sie erwähnen, die ich echt noch nie gehört, dass man vor und ich weiß Haskell und Clojure auf einer ziemlich regelmäßigen basis. 🙂 Wie auch immer, ich mag deine Antwort, ich war einer der 2 upvoters.
Um fair zu sein, in diesem Fall Vanille Ruby hat keine geeignete Abstraktion (meine erste snippet teilt zweimal, die konzeptionell hässlich). Also, ich würde gehen für, entweder Ihre Spritzen oder Facetten#map_by.
InformationsquelleAutor tokland