Map necessita de uma função unária e uma sequence de dados para serem transformados pela função.
Seu uso seria algo assim então:
(map as-album-map sequence-of-albums)
a definição de as-album-map poderia então ser assim:
(defn as-album-map [album-data]
{ :year (get album-data 0)
:title (get album-data 1)
:artist (get album-data 2) })
e sequence-of-albums pode ser uma sequence definida a partir da função load-album-sequence:
(defn load-album-sequence [file-name]
(binding [*delimiter* \;] (parse-csv (char-seq (reader file-name))))))
(def sequence-of-albums (load-album-sequence "resources/1001_Albums.csv"))
Alterando então o arquivo core.clj do projeto, fica exatamente assim:
(ns a-thousand-things-to-do.core)
(use '[clojure.java.io :only (reader)])
(use '[clojure-csv.core])
(defn as-album-map [album-data]
{ :year (get album-data 0)
:title (get album-data 1)
:artist (get album-data 2) })
(defn load-album-sequence [file-name]
(binding [*delimiter* \;]
(parse-csv (char-seq (reader file-name)))))
Alterei project.clj para apontar core como o arquivo principal. Ficou assim:
(defproject a-thousand-things-to-do "1.0.0-SNAPSHOT"
:description "My first experiments with Clojure"
:dependencies [[org.clojure/clojure "1.2.1"]
[clojure-csv "1.2.4"]]
:main a-thousand-things-to-do.core)
Carregando para o REPL
crisweber$ lein repl
E finalmente testando:
(map as-album-map (load-album-sequence "resources/1001_Albums.csv")
e funcionou =)
Updated 7 jun 2001 ===> SVN Atualizado!
Nenhum comentário:
Postar um comentário