簡體   English   中英

Clojure中讀取字符串和加載字符串之間的區別

[英]Difference between read-string and load-string in Clojure

在將read-string替換為load-string之后,我有一些可以工作的代碼。 該代碼有效,但是我想知道為什么。 這兩個clojure函數之間有什么區別?

使用load-string順序讀取和評估字符串中包含的一組表單

使用read-string從字符串s中讀取一個對象

(均引用Clojure API

Load-string會將您的字符串評估為Clojure表達式,而read-string則采用該字符串並將其作為找到的數據結構返回,在這種情況下可能是一個表達式。

提示: (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僅讀取read-string中的第一種形式,而load-stringload-string所有形式。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM