我想在函数内部创建矢量。
(map #([first %]) coll_of_tuples)
这给出了错误
ArityException传递给:PersistentVector的args(0)错误的数量 clojure.lang.AFn.throwArity(AFn.java:429)
除了使用list
之外的任何解决方法?我正在寻找简短的符号。
答案 0 :(得分:2)
如果您想要更短版本,可以选择以下几种方法:
(map #(-> [(first %)]) coll)
(map #(do [(first %)]) coll)
(map (juxt first) coll)
答案 1 :(得分:2)
我喜欢彼得在
的评论中的回答(map #(vector (first %)) coll_of_tuples)
或者替代
(map #(-> % first vector) coll_of_tuples)
或者更多地依靠FP和anon fn less:
(map (comp vector first) coll_of_tuples)
如果您更愿意将其视为从每个序列中提取第一个1长度序列,那么这是一个序列答案:
(map #(take 1 %) coll_of_tuples)
答案 2 :(得分:1)
如果我需要矢量类型,我会按照彼得的建议使用(map #(vector (first %)) coll_of_tuples)
。到目前为止,似乎list
是最短的符号。
答案 3 :(得分:0)
您也可以使用for
,这与map
非常相似,只是依次为序列的每个元素指定一个符号名称:
(for [tuple coll_of_tuples]
[(first tuple)])
这不像其他一些解决方案那么简单,但在某些情况下,使用tuple
而不是%
这样的命名符号会很好。