我对函数式编程很新。我正在学习clojure。我正在尝试一些命令。其中一些工作正常。我在下面得到了这个奇怪的一个:
(read-string "1 2 3")
;;this ouputs
1
(read-string "[1 2 3]")
;;this ouputs
[1 2 3]
我想知道为什么在第一个中它没有输出完整的字符串。 但是会在第二个输出它。 1 2 3
这有什么原因吗?
如果你想知道,我在命令行上这样做。它不应该真的重要。
答案 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
是此处的预期行为。