我想从函数返回一个参数列表,并将它们直接放入哈希映射中。我使用向量来包含这些参数,假设只能从Clojure函数返回一个值。因此,在通话的返回部分,我想要去掉矢量。
这是函数成功返回的内容:
[:top-edge {3 [[0 0]]}]
正如你所看到的,如果你剥离了矢量,你会得到一些能够直接放入散列图的东西(因为它有一个键和一个值):
:top-edge {3 [[0 0]]}
我已尝试使用apply
和flatten
,并知道在某些情况下concat
可用于剥离最外层的矢量,但仍未找到解决方案。
目前我已离开代码,因此它不会剥离向量,错误消息非常有意义:java.lang.IllegalArgumentException: No value supplied for key: [:top-edge {3 [[0 0]]}]
修改 问题已经回答,但只是为了显示实际的代码以及有效和无效的内容。这确实有效:
(conj {:rep (->Blob rgb pos)} (new-edge-map pos edge-keyword seg-id))
,但这不是:
{:rep (->Blob rgb pos) (apply hash-map (new-edge-map pos edge-keyword seg-id))}
我得到的错误是'地图文字必须包含偶数个表格'。
答案 0 :(得分:1)
您可以使用conj
:
(conj {} [:top-edge {3 [[0 0]]}])
答案 1 :(得分:0)
来自hash-map
的文档:
返回带有提供的映射的新哈希映射。如果任何钥匙是
相等,它们的处理就像重复使用assoc一样。
所以,
(apply hash-map [:top-edge {3 [[0 0]]}])
=> {:top-edge {3 [[0 0]]}}