Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure 在selmer中迭代映射_Clojure_Selmer - Fatal编程技术网

Clojure 在selmer中迭代映射

Clojure 在selmer中迭代映射,clojure,selmer,Clojure,Selmer,我想在selmer中迭代一个映射,这样我就可以打印键和值。据我所知,这是不支持开箱即用的,因此我尝试了以下方法: (defn mapper-tag [args context-map content] (when-let [map-data (get context-map (keyword (first args)) (get context-map (first args)))] (apply str (for [[k v]

我想在selmer中迭代一个映射,这样我就可以打印键和值。据我所知,这是不支持开箱即用的,因此我尝试了以下方法:

(defn mapper-tag [args context-map content]
  (when-let [map-data (get context-map (keyword (first args))
                           (get context-map (first args)))]
    (apply str (for [[k v] map-data]
                 (selmer.parser/render (get-in content [:mapper :content]) {:key k :val v})))))

(selmer.parser/add-tag! :mapper mapper-tag :endmapper)
(selmer.parser/render  "{% mapper m %}KEY {{key}} \n{% endmapper %}"  {:m  {:a 1 :b 1}})
我希望这个输出类似于
a键
b键

但它输出

键
键


有任何指针吗?

Clojure中的映射是seq,因此您可以只使用selmer
进行

 (selmer.filters/add-filter! :key key)
 (selmer.filters/add-filter! :val val)
 (selmer.parser/render  "{% for item in m %} KEY is {{item|key}} VALUES is {{item|val}}\n{% endfor %}"  {:m  {:a 1 :b 1}})

Selmer的内置
{%for%}
循环,因此您可以在模板中直接拉出键/值:

(selmer.parser/render
  "{% for key,val in m %}KEY: {{key}}, VALUE: {{val}}\n{% endfor %}"
  {:m {:a 1 :b 1}})
输出:

KEY: a, VALUE: 1
KEY: b, VALUE: 1

您的输出与代码不匹配。
“FFF”
去了哪里,以及
“KEY”
从哪里来?公平地说,这个例子是从两次不同的尝试中抄袭出来的,模板与输出不匹配。我现在已经更新了。