我需要做以下事情:
(defn make-menu []
(for [i (range 3)]
'(+ i 100)))
我需要make-menu返回:('(+ 0 100)'(+ 1 100)'(+ 2 100))
请注意,向量包含未评估的函数.
可以在Clojure中做到这一点吗?
谢谢你的帮助!
的Jakub
(defn make-menu [] (for [i (range 3)] (list '+ i 100)))
Run Code Online (Sandbox Code Playgroud)
要么
(defn make-menu [] (for [i (range 3)] `(+ ~i 100)))
Run Code Online (Sandbox Code Playgroud)
第一种形式只是一个包含三个元素的列表:符号+引用,i计算为列表理解中的值和100.
第二种形式是语法报价的一个例子.注意正常引用'和语法引用之间的区别:第二个允许通过前缀来评估子表单~.它也完全符合符号,因此+成为clojure.core/+.正常引用只引用引用形式中的每个子元素,因此不可能进行评估.