我有一些代码,在将read-string替换为load-string后可以正常运行。很好,代码可以工作,但我想知道原因。这两个clojure函数之间有什么区别?
我有一些代码,在将read-string替换为load-string后可以正常运行。很好,代码可以工作,但我想知道原因。这两个clojure函数之间有什么区别?
(load-string "(+ 1 2)")
和 (eval (read-string "(+ 1 2)"))
将给出相同的结果,即3。两个显著的区别:
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