5

我可以将字符串转换为序列,然后将该序列转换为表示该序列的字符串。

user=> (str (first (list (seq "(xy)z"))))
"(\\( \\x \\y \\) \\z)"

我也可以在上面的表单中插入 apply 来取回原始字符串

user=> (apply str (first (list (seq "(xy)z"))))
"(xy)z"

但是有没有办法将表示序列的字符串转换为字符串表示的序列?如:

"(\\( \\x \\y \\) \\z)"
user=> (some-fn2 "(\\( \\x \\y \\) \\z)")
(\( \x \y \) \z \))
4

1 回答 1

8

read-string函数将字符串读入 Clojure 表达式。

(read-string "(\\( \\x \\y \\) \\z)")
(\( \x \y \) \z)  

读取函数系列是使 Clojure 成为 lisp 和整个“一切都是数据”心态的重要组成部分。您可以使用它们阅读任何表格:

(read-string "{:a 1 :b 3 :c (1 2 3)}")
{:a 1, :b 3, :c (1 2 3)}
于 2012-08-20T21:35:45.227 回答