dire che ho un vettore:Clojure: chiamare una funzione per ogni elemento in un vettore con esso indice
(def data ["Hello" "World" "Test" "This"])
E voglio popolare una tabella da qualche parte che ha un api:
(defn setCell
[row col value]
(some code here))
allora qual è il modo migliore per ottenere le seguenti chiamate ad accadere:
(setCell 0 0 "Hello")
(setCell 0 1 "World")
(setCell 0 2 "Test")
(setCell 0 3 "This")
ho trovato che il seguente funzionerà:
(let [idv (map vector (iterate inc 0) data)]
(doseq [[index value] idv] (setCell 0 index value)))
Ma c'è un modo più veloce che non richiede un nuovo idv di infrastruttura temporanea?
Clojure 1.2 ha aggiunto 'map-indexed', che è l'opzione più semplice e migliore che abbia visto fino ad ora. Vedi [risposta di Rollo in basso] (http://stackoverflow.com/a/5992602/109618). –