2

我是 Clojure 的初学者,我有一个简单(愚蠢)的问题。我正在尝试读取 4 个用户输入,然后将这些输入存储到列表中

这是我的代码:

(def in1 (读取行)) (def in2 (读取行)) (def in3 (读取行)) (def in4 (读取行))

(def mylist '(in1 in2 in3 in4))

但是,当我打印列表时,它给了我“in1 in2 in3 in4”。我如何将变量 in1 in2 in3 和 in4 的值放入列表中?

谢谢

4

3 回答 3

4

Clojure(和大多数 Lisps)中的单引号告诉系统不要计算表达式。因此

'(in1 in2 in3 in4) 

是相同的

(quote (in1 in2 in3 in4)

如您所见,它们都以符号列表结束。

如果您想要一个由这些符号表示的值的列表,您可以使用列表形式。这将评估其所有参数并返回结果列表。它看起来像这样:

(def mylist (list in1 in2 in3 in4))
于 2009-07-14T05:28:01.817 回答
2
(def mylist (list in1 in2 in3 in4))
于 2009-07-14T04:42:12.893 回答
0

正如建议的那样,使用list是您正在寻找的东西。如果您想混合评估和未评估的符号,您可以使用语法引用和取消引用。对于你的问题,这是另一种方式,以防有人正在寻找这个。(注意反引号而不是单引号)

`(~in1 ~in2 ~in3 ~in4)
于 2015-11-05T18:03:57.257 回答