Clojure中读取字符串和加载字符串之间的区别

时间:2010-12-29 13:54:15

标签: clojure

我有一些代码在用load-string替换read-string后有效。代码工作很好,但我想知道原因。两个clojure函数之间有什么区别?

2 个答案:

答案 0 :(得分:8)

使用load-string顺序读取和评估包含的表单集 串

使用read-string从字符串s

中读取一个对象

(均来自Clojure API

Load-string将您的字符串计算为Clojure表达式,read-string接受字符串并将其作为找到的数据结构返回,在这种情况下可能是表达式。

Protip:(load-string "(+ 1 2)")(eval (read-string "(+ 1 2)"))会给你相同的结果,即3

答案 1 :(得分:0)

两个值得注意的差异:

read-string读取但不评估,而load-string读取进行评估。

(read-string "(inc 1)") => (inc 1)
(load-string "(inc 1)") => 2

read-string只读取字符串中的第一个表单,而load-string加载字符串中的所有表单。

(read-string "1 2") => 1
(load-string "1 2") => 2