我有这样的功能:
pdfkit-clj.core/gen-pdf
[html & {:keys [path tmp asset-path stylesheets margin orientation page-size], :or {path (:path defaults), tmp (:tmp defaults), asset-path (:asset-path defaults), margin {}, orientation (:orientation defaults), page-size (:page-size defaults)}}]
现在我试图传递一个带有关键字参数的地图,但不起作用。
(let [gen_pdf_args {:tmp tmp_dir
:margin {:top 0 :right 0 :bottom 0 :left 0}}]
(gen-pdf html-black gen_pdf_args)
)
此问题类似于将列表转换为参数。
答案 0 :(得分:2)
使用& {:keys [...]}
实际上并不期望您使用地图来调用它。相反,您将其称为(gen-pdf html :tmp tmp_dir :margin {:top 0})
。
如果您确实想要使用地图,可以使用“应用”和“{1}}”。
答案 1 :(得分:0)
听起来你想要类似keyvals
函数的东西:
(keyvals m)
"For any map m, returns the keys & values of m as a vector,
suitable for reconstructing via (apply hash-map (keyvals m))."
(keyvals {:a 1 :b 2})
;=> [:b 2 :a 1]
(apply hash-map (keyvals {:a 1 :b 2}))
;=> {:b 2, :a 1}
请注意,你仍然需要像Alejandro那样使用apply
。您可以在keyvals
here找到更多相关信息。