【发布时间】:2015-10-04 19:50:52
【问题描述】:
我想从函数返回参数列表,并将它们直接放入哈希映射中。我使用一个向量来包含这些参数,假设 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))}
我得到的错误是“地图文字必须包含偶数个表单”。
【问题讨论】:
标签: clojure