读字符串不输出完整的字符串clojure

时间:2016-01-05 15:04:22

标签: string clojure lisp

我对函数式编程很新。我正在学习clojure。我正在尝试一些命令。其中一些工作正常。我在下面得到了这个奇怪的一个:

(read-string "1 2 3")
;;this ouputs
1
(read-string "[1 2 3]")
;;this ouputs
[1 2 3]

我想知道为什么在第一个中它没有输出完整的字符串。 但是会在第二个输出它。      1 2 3

这有什么原因吗?

如果你想知道,我在命令行上这样做。它不应该真的重要。

2 个答案:

答案 0 :(得分:5)

您的示例都没有输出字符串。

正如文档字符串所说:"从字符串s中读取一个对象。"

在第一种情况下,对象是1,在第二种情况下,对象是[1 2 3]

要输出字符串,对象必须是字符串,例如: G。 (read-string "\"1 2 3\"")

答案 1 :(得分:2)

" string"的含义名称read-string中的名称表示其参数是字符串,而不是其返回值。它的重点是解析给定字符串中的一段clojure语法,它在两个示例中都是这样做的。字符串"1 2 3"包含三个表单,而不是一个。 read-string始终解析并返回单个表单,因此返回1是此处的预期行为。