2009-12-09 22 views
4

我有以下形式的Clojure的數據結構:打印和讀取文件列表中的Clojure

{:富「( 「條」, 「BLAT」)}

,並嘗試使用各種pr/prn/print將它們寫入文件。然而,每次的結構如下

{:FOO(「酒吧」「BLAT」)}

然後當我嘗試使用負載文件中它來閱讀,我得到一個錯誤如:

java.lang.ClassCastException:java.lang.String中不能轉換到clojure.lang.IF N(集結state.clj:79)

PR有可能當列表被讀取時正在被評估爲函數調用。有沒有辦法用引用的表格將結構寫出來?

感謝, 尼克

回答

8

印刷的逆通常是看書,不加載。

user> (read-string "{:foo (\"bar\" \"blat\")}") 
{:foo ("bar" "blat")} 

如果您確實需要打印可加載代碼,則需要引用兩次。

user> (pr-str '{:foo '("bar" "blat")}) 
"{:foo (quote (\"bar\" \"blat\"))}" 

user> (load-string (pr-str '{:foo '("bar" "blat")})) 
{:foo ("bar" "blat")} 
+0

太好了,非常感謝! – eldoctoro 2009-12-09 18:39:47