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

Eindrücke aus Red Dead Redemption 2

Neuer Bluray Player: PS4

How to hardware reset the new Oura ring

Neuer Monitor: Dell S2716DG

Ein paar Bilder

Endlich da: Mein Oura Ring

Quick changelog with git

Pik Ass in Destiny 2

Neue Drohne: DJI Mavic Air

Confirmed: Changes to the Crossfit Games