我是Clojure的新手。我在删除特殊字符并逐行读取clojure文件后如何打印特定字符串时遇到麻烦。
我有一个名为example.clj的文件,看起来像:
(defn patient
"Some string"
(measures
patient/symptom-fever
patient/symptom-cold
.
.
.
.
patient/symptom-bp))
我从上述文件中删除了所有特殊字符,并使用下面的clojure代码逐行读取了文件。
(defn loadcljfile []
(def newstring(clojure.string/replace (slurp "C:/Users/Desktop/example.clj") #"[\[/.(:)\]-]" " "))
(with-open [rdr (reader newstring)]
(doseq [line (line-seq rdr)]
(println line))))
(loadcljfile)
现在不知道如何打印患者,即我的defn名称和所有措施。
有人可以帮助我吗?
谢谢
答案 0 :(得分:0)
在函数中用名称定义事物时,使用let比def更安全,更容易。 def为整个命名空间(通常是整个文件)定义了它,并让它有了一个名称,直到它关闭为止。
在这种情况下,让Clojure读取表达式并将其转换为数据结构非常有意义。如果文件是您要运行或使用tools.reader的函数,则可以使用load-file函数来实现。
如果使用加载文件方法,则可以使用clojure.repl / source函数进行打印;如果使用tools.reader路径,则可以进行打印。