Frage

Ich versuche, in die Clojure Gemeinschaft zu erhalten. Ich habe viel mit Python gearbeitet, und eine der Funktionen, die ich machen ausgiebig Gebrauch von der Reißverschluss ist () -Methode, über Wertepaare laufen. Gibt es eine (klug und kurz) Art und Weise das gleiche in Clojure erreichen?

War es hilfreich?

Lösung

Eine andere Möglichkeit ist einfach Karte zu verwenden, zusammen mit einigen Funktion, die ihre Argumente in einer Folge sammelt, wie folgt aus:

user=> (map vector '(1 2 3) "abc")
([1 \a] [2 \b] [3 \c])

Andere Tipps

(zipmap [:a :b :c] (range 3))
-> {:c 2, :b 1, :a 0}

Iterieren über Karten geschieht paarweise, z.B. wie folgt aus:

(doseq [[k v] (zipmap [:a :b :c] (range 3))]
  (printf "key: %s, value: %s\n" k v))

druckt:

key: :c, value: 2
key: :b, value: 1
key: :a, value: 0

Die Frage beantwortet wurde, aber es gibt noch interleave, die auch eine beliebige Anzahl von Sequenzen behandelt, aber nicht Gruppe der resultierende Sequenz in Tupeln (aber Sie partition dafür verwenden).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top