Destructuring von Parametern in Clojure


In Clojure gibt es ein nettes Sprachmittel, um Parameter -oder generell: Elemente aus Listen- herauszuholen. Am häufigsten wird das sicher bei Funktionsparametern eingesetzt. Hier ist ein einfaches Beispiel:

;; Anlegen einer Koordinate
(def coord [3 5])
;; Ausgeben der Koordinaten
(let [[x y] coord]
  (println"x:" x"y:" y))

Zeile 2 legt eine Koordinate an, bestehend aus 2 Zahlen. Zeile 4+5 destructures die Koordinate und weist den Parametern x und y die Werte aus coord zu. In der Funktion werden die Parameter dann verwendet und als String ausgegeben.

Den gleichen Mechanismus nutzt man eigentlich bei jeder Funktion. Am deutlichsten wurde mir das, als ich das obige Beispiel für beliebig-dimensionale Koordinaten erweitert habe:

;; 3-dimensionale Koordinate anlegen
(def coord [1 2 3])
;; Koordinate ausgeben
(let [[x y& more] coord]
  (println"x:" x"y:" y"others:" more))
;; => x: 1 y: 2 others: (3)

Jetzt werden immer noch die ersten beiden Elemente aus der Koordinate geholt, aber der Rest wird durch & more als Liste weitergegeben. Diesen Mechanismus nutzt man oft bei der definition von eigenen Funktionen in Clojure.

Weitere Artikel

Neue Tastatur: Pok3r Vortex RGB

New minecraft survival mod for 1.11.2

Änderungen beim Flug mit Quadkoptern

Ein paar Fotos

Nach den Crossfit Open

Crossfit Open WOD 17.5

Crossfit Open WOD 17.4

Crossfit Open WOD 17.3

Crossfit Open Workout 17.2

Crossfit Open Workout 17.1