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