在以下
的输出上调用reverse(def seq-counter (atom 0))
(defn tokenize-data [data]
(reduce
(fn [out-data-map token]
(if (seq? token)
(conj out-data-map {(keyword (str "DIRECTIVE_" (reset! seq-counter (inc @seq-counter))))token})
(if-not (= token (first '(EQU)))
(conj out-data-map {(keyword (str "DATA_1")) token})
(conj out-data-map {:START '(EQU)}))))
{}
data))
用
调用'(EQU (COLOR TABLE) ?)
产生
([:START (EQU)] [:DIRECTIVE_13 (COLOR TABLE)] [:DATA_1 ?])
我的问题是:这是什么?作为一个值,我该如何比较它(除了下面的内容)?
我似乎无法测试,看看是否?有没有使用\?
我能做的就是像这样比较,我得到了我想要的结果。
(= (last (nth (reverse (tokenize-data '(EQU (COLOR TABLE) ?))) 2)) (first '(?)))
答案 0 :(得分:3)
您可以通过在该表达式前放置引用'
来阻止Clojure评估任何表达式。因此,'(?)
引用一个列表,其中?
作为第一个元素,而Clojure没有尝试调用?
函数,(first '(?))
访问该列表中的?
。< / p>
要直接获取?
符号,只需执行'?
,即可让您在没有Clojure尝试返回分配给{{1}的值(如果有)的情况下访问符号本身}
?