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