我正在尝试基于Clojure中的迭代来为大文件编写阅读器。但是我怎样才能在Clojure中一行一行地返回?我想让这样的事情:大文件逐行阅读
(的println(do_something(READFILE(:文件选择采用)));处理和打印第一线
(的println(do_something(READFILE(:文件选择采用)));工艺并打印第二行
代码:
(ns testapp.core
(:gen-class)
(:require [clojure.tools.cli :refer [cli]])
(:require [clojure.java.io]))
(defn readFile [file, cnt]
; Iterate over opened file (read line by line)
(with-open [rdr (clojure.java.io/reader file)]
(let [seq (line-seq rdr)]
; how return only one line there? and after, when needed, take next line?
)))
(defn -main [& args]
; Main function for project
(let [[opts args banner]
(cli args
["-h" "--help" "Print this help" :default false :flag true]
["-f" "--file" "REQUIRED: File with data"]
["-c" "--clusters" "Count of clusters" :default 3]
["-g" "--hamming" "Use Hamming algorithm"]
["-e" "--evklid" "Use Evklid algorithm"]
)]
; Print help, when no typed args
(when (:help opts)
(println banner)
(System/exit 0))
; Or process args and start work
(if (and (:file opts) (or (:hamming opts) (:evklid opts)))
(do
; Use Hamming algorithm
(if (:hamming opts)
(do
(println (readFile (:file opts))
(println (readFile (:file opts))
)
;(count (readFile (:file opts)))
; Use Evklid algorithm
(println "Evklid")))
(println "Please, type path for file and algorithm!"))))
你所说的 “回线” 是什么意思?你可以在一些原子中写出你的行,但是所有的逐行读数都是毫无意义的 - 你的原子保存在记忆中。让你的readFile接受处理函数并打印结果。 – coredump 2014-09-20 15:23:01