我有这样的功能:
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)
)这个问题类似于将列表转换为参数。
发布于 2017-05-16 15:38:37
实际上,使用& {:keys [...]}并不期望您用地图来调用它。相反,您将其称为(gen-pdf html :tmp tmp_dir :margin {:top 0})。
如果您真的想使用您的地图,您可以使用应用和扁平,如(apply gen-pdf html-black (-> gen_pdf_args vec flatten))。
发布于 2017-05-16 15:54:03
听起来,您需要类似于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 这里的更多信息。
https://stackoverflow.com/questions/44005705
复制相似问题