我是 Clojure 的初学者,我有一个简单(愚蠢)的问题。我正在尝试读取 4 个用户输入,然后将这些输入存储到列表中
这是我的代码:
(def in1 (读取行)) (def in2 (读取行)) (def in3 (读取行)) (def in4 (读取行))
(def mylist '(in1 in2 in3 in4))
但是,当我打印列表时,它给了我“in1 in2 in3 in4”。我如何将变量 in1 in2 in3 和 in4 的值放入列表中?
谢谢
Clojure(和大多数 Lisps)中的单引号告诉系统不要计算表达式。因此
'(in1 in2 in3 in4)
是相同的
(quote (in1 in2 in3 in4)
如您所见,它们都以符号列表结束。
如果您想要一个由这些符号表示的值的列表,您可以使用列表形式。这将评估其所有参数并返回结果列表。它看起来像这样:
(def mylist (list in1 in2 in3 in4))
(def mylist (list in1 in2 in3 in4))
正如建议的那样,使用list
是您正在寻找的东西。如果您想混合评估和未评估的符号,您可以使用语法引用和取消引用。对于你的问题,这是另一种方式,以防有人正在寻找这个。(注意反引号而不是单引号)
`(~in1 ~in2 ~in3 ~in4)