Können Sie einen Funktionsparameter destrukturieren, aber das Original immer noch zur Verfügung haben? Die Art und Weise, wie ich es jetzt mache, ist nur ein let
Formular innerhalb der Funktion Körper, aber ich frage mich, ob es eine bessere Möglichkeit, es zu tun.Strukturparameter einer Clojure-Funktion unter Beibehaltung des ursprünglichen Wertes.
22
A
Antwort
25
wie :as
Werke für Funktionen scheint zu:
mit vector
(defn test [[x y :as v]]
{:x x :y y :v v})
(test [1 2 3 4])
=> {:x 1 :y 2 :v [1 2 3 4]}
mit hash-map
(defn test2 [{x :x y :y :as m}]
{:x x :y y :m m})
(test2 {:x 1 :y 2 :z 3})
=> {:x 1 :y 2 :m {:x 1 :y 2 :z 3}}
Sehen Sie diese tolle Blogeintrag: http://blog.jayfields.com/2010/07/clojure-destructuring.html
Verwandte Themen
- 1. PyQt5 QTableView-Zellbearbeitungsverhalten - Überlagerung des ursprünglichen Wertes
- 2. Erstellen von ActionLinks unter Beibehaltung der ursprünglichen Uri/Route-Werte
- 3. Entpacken und umbenennen von Dateien unter Beibehaltung der ursprünglichen Dateierweiterung
- 4. Zufallsstichprobe aus einem Datensatz, unter Beibehaltung der ursprünglichen Wahrscheinlichkeitsverteilung
- 5. Importieren vorhandener E-Mails in Office 365 unter Beibehaltung des ursprünglichen Datums
- 6. Aggregieren von Datenrahmen unter Beibehaltung der ursprünglichen Reihenfolge, in einer einfachen Art und Weise
- 7. unter Beibehaltung Fall Empfindlichkeit
- 8. Ändern des Wertes einer NSNummer
- 9. CodeIgniter URL Strukturparameter
- 10. Konvertieren von Spalten in Zeilen unter Beibehaltung des Spaltennamens
- 11. Verschieben von Text unter Beibehaltung des Hintergrundbildes in CSS
- 12. Größe Bild zu Container unter Beibehaltung des Seitenverhältnisses in CSS?
- 13. SQL Server 2008 rekursive cte string ersetzen unter Beibehaltung der ursprünglichen Wert
- 14. Ändern der Tönung einer Bitmap unter Beibehaltung der Gesamthelligkeit
- 15. Umbenennen von Funktionen unter Beibehaltung der Abwärtskompatibilität
- 16. UITableViewAutomaticDimension für Ansicht Zellentabelle unter Beibehaltung Bildseitenverhältnis
- 17. Ändern des Wertes in einer Array-Liste?
- 18. Erzeugen des Hash-Wertes einer Datei
- 19. Umkehrung des ursprünglichen Arrays
- 20. git pull unter Beibehaltung lokaler Änderungen
- 21. graphviz: kreisförmiges Layout unter Beibehaltung der Knotenreihenfolge
- 22. Parallel.Für immer unter Beibehaltung der Bestellung
- 23. Sortierung unter Beibehaltung der Reihenfolge in Python
- 24. WPF Xaml: Skalieren des übergeordneten Bedienfelds unter Beibehaltung der Größe des untergeordneten Bilds
- 25. Beibehaltung des Massenschwerpunkts einer mehrdimensionalen Integer-Box mit entfernten "Orthants"
- 26. Verfolgungswurzelwurzel des sich bewegenden Wertes
- 27. MySQL boolean - Spiegeln des Wertes?
- 28. Zuordnung des Wertes funktioniert nicht
- 29. Übergabe von Strukturparameter an eine Funktion innerhalb einer Struktur
- 30. NSIndexPath indexPathForItem: inSection: Rückgabe des unsinnigen Wertes
lasse ich glaube, fn, defn usw. benutzen alle die s eine Destrukturierungssyntax. – JohnJ
@JohnJ: Ja, um die Destrukturierungssemantik konsistent zu machen. – Ankur
@John Das ist "wahr". Ich war zuerst sehr verwirrt auf dem Blogpost, weil es nur lets als Beispiele verwendet. Der Unterschied zwischen let und fn/defn ist, dass es eine bindende Form verwendet. –