1

当我评估整个文件时,它似乎没有问题。

(ns ShipDataRecord
  (:import [java.util.Date]
   [org.joda.time.DateTime]
   [org.joda.time.Seconds]
   [org.joda.time.format.*]
   [semsav.RecordSplitter]))
(require '[clojure.data.csv :as csv]
         '[clojure.java.io :as io])

(defrecord Record [W1 W2 W3])

(defn read-csv [fname count]
  (with-open [file (reader fname)]
    (doall (take count (map (comp first csv/read-csv)
                            (line-seq file))))))

(map #(apply ->Record %) (read-csv "test.csv" 1))

但是,当我逐行评估时,它似乎给了我一个问题。

因此,在评估文件之后,我在 REPL 中运行了这一行

(:W3 (first Record))

但它给了我一个编译器异常 IllegalArgumentException 不知道如何从:java.lang.Class clojure.lang.RT.seqFrom (RT.java:494) 创建 ISeq。

我已经用谷歌搜索了,但我似乎找不到问题所在。我在另一个问题中问过这个问题,但是由于单词太长,我必须创建一个新问题

4

1 回答 1

1

(:W3 (first Record))的符号Record代表类Record。我猜从您之前的帖子中,您只想:W3(map #...). map因此,您只需从表达式或可以存储表达式结果的变量中获取此值:

(:W3 (first (map #(apply ->Record %) (read-csv "1.csv" 1))))

或者

(def records (map #(apply ->Record %) (read-csv "1.csv" 1)))

(:W3 (first records))
于 2013-01-01T11:26:32.700 回答