我对关闭非常新,所以我不完全确定如何做到这一点。如果我的文件data.txt
包含以下内容:
[
{:name "Steve"}
{:name "Issac"}
{:name "Lucas"}
{...}
]
我希望能够读取每个:name
标记的内容并使用返回值执行某些操作(在这种情况下,它将打印到控制台)。我在网上查了一下,发现有一个名为reader
的方法,我知道如何打开文件。
Closure语法让我感到困惑,所以我不知道该怎么做。
答案 0 :(得分:0)
应该有两种可能性:
1)通过clojure.core / read-string
生成clojure(read-string "['q 2 \"test\"]")
;; [(quote q) 2 "test"]
2)通过clojure.edn / read-string
(clojure.edn/read-string "['q 2 \"test\"]")
;; ['q 2 "test"]
第二个应该更快更安全(但不是eval和东西), 但仅适用于edn格式(这是clojure代码的子集)
字符串dummy(即来自你的data.txt)
;; a string, just for demo
(def s "[{:name \"Steve\" email: \"foo@bar.com\" }
{:name \"Issac\"}
{:name \"Lucas\"}]")
其余部分是普通的clojure,如果你遇到clojure地图有问题here是文件
(doseq [name (map :name (clojure.edn/read-string s))]
(println name))
;; Steve
;; Issac
;; Lucas
;; nil