Wie, um anzeigen über die Werte einer hash-Tabelle (Schläger)
Möchte ich anzeigen einer Funktion die Werte in einer hash-Tabelle, etwa so:
(hash-map add1 (hash "apple" 1 "pear" 2))
=> #hash(("apple" . 2) ("pear" . 3))
Gibt es eine library-Funktion, um dies zu tun? Es wäre gut zu haben, eine, die arbeitete auf unveränderlich hashetables zu.
Sah ich auf dem Planeten, aber nicht alles sehen da.
Nun, wenn das wirklich nicht vorhanden ist, ich werde gehen Sie vor und schreiben Sie es. Was würde die Etikette für immer in diesem Schläger? Ich habe gerade fork auf github, und fügen Sie es der standard-Bibliothek (und den docs!) und submit a pull request? Oder sollte ich es einen Planeten zuerst, und dann Fragen, für die es verschoben werden? Ich würde gerne helfen, aber ich weiß einfach nicht, was ist der 'richtige' Weg, um darüber zu gehen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es eine hash-map, aber es gibt eine Liste [Eins]
Müssten Sie schreiben Ihre eigenen
hash-map
genau das zu tun, was Sie wollen.Andere form, die Sie interessieren könnten, ist für/hash [Zwei]:
Wenn Sie das Gefühl, dass diese Funktionalität soll enthalten sein, mit Schläger, patches sind herzlich willkommen! Der beste Weg, um contribute to fork auf github und senden Sie eine pull-Anfrage.
for/hash
, und das ist, was ich am Ende mit. Dank einem Haufen.Im Schläger, die Sie verwenden können, die
hash-map
higher-order-Verfahren, die in der Regel gibt eine Liste mit den Werten die sich aus der Anwendung des Verfahrens erhalten als parameter, aber es kann angepasst werden für die änderung der Karte in Platz. Zum Beispiel:Der trick ist vorbei ein
lambda
mit der entsprechenden Funktionalität:Für eine Allgemeine Lösung, versuchen Sie, diese Umsetzung:
Seit hash-map erstellt eine Liste, die wird hier nicht benötigt, ich würde eher hash-für-jeden.
Edit: ich habe vergessen, dass für kann eine hash-Tabelle:
Können Sie eine Iteration durch die Werte einer hash-Tabelle mit in-hash-Werte, und verwenden Sie regelmäßig for-Schleifen zu anzeigen über Sie. Die Funktion
in-hash-values
nimmt einen hash und gibt eine Sequenz der Werte, die dann befahren werden, die mit einemfor
Schleife.Beispiel:
Können Sie ebenso Sequenz-Karte, obwohl das, was Sie zurück bekommen, ist eine weitere Sequenz und nicht als eine Liste: