jkn*_*rkn 11 lisp file clojure
当我想将存储在文件中的S表达式读入正在运行的Common Lisp程序时,我执行以下操作:
(defun load-file (filename)
"Loads data corresponding to a s-expression in file with name FILENAME."
(with-open-file (stream filename)
(read stream)))
Run Code Online (Sandbox Code Playgroud)
例如,如果我有一个名为foo.txt包含S表达式的文件(1 2 3),则上述函数将返回该表达式,如果调用如下:(load-file "foo.txt").
我一直在搜索和搜索,并没有在Clojure中找到同样优雅的解决方案.有任何想法吗?
谢谢!
你可以这样做
(require '[clojure.contrib.io :as io])
(io/with-in-reader (io/file "foo.txt") (read))
; => (1 2 3)
Run Code Online (Sandbox Code Playgroud)
请注意,您很可能需要重新绑定*read-eval*到false第一位.另请注意,上面的内容适用于当前的contrib HEAD(当它发布时几乎肯定会在1.2中工作); 对于Clojure 1.1,clojure.contrib.duck-streams和clojure.contrib.java-utils名称空间中提供了相同的功能.
我在这里找到了一个解决方案:如何将字符串作为clojure表达式进行求值?
(read-string (slurp "foo.txt"))
Run Code Online (Sandbox Code Playgroud)
抱歉打扰你,伙计^ _ ^
| 归档时间: |
|
| 查看次数: |
861 次 |
| 最近记录: |