Разница между строкой чтения и строкой загрузки в Clojure - PullRequest
10 голосов
/ 29 декабря 2010

У меня есть код, который работает после замены read-string на load-string. Хорошо, что код работает, но я хотел бы знать, почему. В чем разница между двумя функциями clojure?

Ответы [ 2 ]

8 голосов
/ 29 декабря 2010

Используйте строку загрузки, чтобы последовательно прочитать и оценить набор форм, содержащихся в строка

Использование read-string для чтения одного объекта из строки s

(оба цитируются из Clojure API )

Load-string оценит вашу строку как выражение Clojure, а read-string берет строку и возвращает ее как найденную структуру данных, в этом случае может быть выражением.

Protip: (load-string "(+ 1 2)") и (eval (read-string "(+ 1 2)")) даст вам тот же результат, что и 3

0 голосов
/ 23 октября 2017

Два заметных различия:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...