在clojure中,如何将文件读入序列,其中每行是序列中的一个元素.所以我想看看函数的定义,get-lines所以我可以做以下事情:
(def lines (get-lines "test.txt"))
Run Code Online (Sandbox Code Playgroud)
和行是一个非惰性序列.
Ret*_*ief 10
替代实施:
(require ['clojure.string :as 'str])
(defn get-lines [file]
(str/split-lines (slurp file)))
Run Code Online (Sandbox Code Playgroud)
此函数返回结果的向量而不是seq.
如果您不使用1.3,请改为使用clojure.contrib.string.
要将惰性序列转换为非惰性,您可以doall像这样使用:
(use 'clojure.java.io)
(defn get-lines [fname]
(with-open [r (reader fname)]
(doall (line-seq r))))
Run Code Online (Sandbox Code Playgroud)