當我想在存儲在一個文件到正在運行的Common Lisp程序中的S-表達仔細一看,請執行下列操作:Clojure:相當於Common Lisp READ功能?
(defun load-file (filename)
"Loads data corresponding to a s-expression in file with name FILENAME."
(with-open-file (stream filename)
(read stream)))
如果,例如,我有一個名爲foo.txt
文件,其中包含在S - 表達式(1 2 3)
,上述函數將返回該S表達式,如果調用如下:(load-file "foo.txt")
。
我一直在搜索和搜索,並沒有在Clojure中找到同樣優雅的解決方案。有任何想法嗎?
謝謝!
嗨,什麼是利用這種方法相對於(讀字符串,如果有的話,(啜食「foo.txt」)) – jkndrkn 2010-05-18 01:31:04
'slurp' /'io/slurp *'儘管'read-string'只能讀取一個整體形式並丟棄剩下的文件,閱讀器中的方法只會讀取第一個表格的一小部分(由於緩衝)。另外,你可以在'帶有閱讀器'的主體中有更多的表單;特別是隨後在同一個'with-in-reader'表單中調用'read'將會從文件中返回更多的表單。 (嘗試使用'[(read)(read)]'作爲身體來獲得最初的兩種形式。)但是,我已經將這個答案和我想到的一起發佈了。 :-) – 2010-05-18 01:42:27