pri*_*ing 5 string list clojure
我有一个像这样的简单结构:
(def example {:bbb "bbb" :xxx [1 2 3] :yyy '(3 5 7)})
Run Code Online (Sandbox Code Playgroud)
如果我把它写到它包含的文件中
{:bbb "bbb" :xxx [1 2 3] :yyy (3 5 7)}
Run Code Online (Sandbox Code Playgroud)
这大多是正确的,但如果我在此加载文件,它会失败,因为它试图将3视为一个函数(不再引用parens,因此尝试将其作为函数进行求值).
这样做的正确方法是什么?谢谢!
如果你想读回先前写入文件,作为一个文字一个Clojure的数据,你需要使用read或read-string而不是load-file:
(with-open [fd (java.io.PushbackReader.
(io/reader (io/file "/path/to/file")))]
(read fd))
Run Code Online (Sandbox Code Playgroud)
你可以read多次打电话来阅读连续的表格(当然,只要你保持Reader开放状态).
这不涉及评估,除非#=读取器宏出现在输入流中,在这种情况下紧接在它之后的表单在读取时被评估并被read输出的结果替换(例如(read-string "#=(+ 1 2)")返回3).要禁止评价#=前缀的形式绑定*read-eval*到false.