我使用的Clojure和打嗝(有黑色)Clojure的使用()的,我有這樣的代碼:與打嗝和黑色
(defn dataframe [id]
(db/db-to-data id))
(defpartial drop-downs [nms]
(for [nm (keys nms)] (drop-down nm (get nms nm))[:br])
(submit-button "Refresh")
)
(defpage "/dataset/table/:id" {:keys [id]}
(common/layout
(form-to [:post (format "/dataset/table/%s" id)]
(drop-downs {"alessio" [:col0], "test" [:col1]})
)
(html-table (dataframe id))))
我的問題是:
(for [nm (keys nms)] (drop-down nm (get nms nm))[:br])
我想在我的表單中有多個選擇。上面的這一行是這樣做的,但由於某些原因,它不考慮[:br],所以它不會破壞行。但是,如果我這樣做:
(form-to [:post (format "/dataset/table/%s" id)]
(drop-down "Test1" "1")[:br]
(drop-down "Test2" "2")[:br]
)
[:br]標籤確實有效。我相信這與(for)宏的工作方式有關,但我無法弄清楚原因以及如何解決它。
編輯
建議我放棄使用for。下面的最終結果(這是Joost的回答,稍微修改):
(mapcat #(vector (drop-down % (nms %)) [:br]) (keys nms))
感謝。這幫助我更好地理解mapcat。 – kfk