映射向量列表

时间:2016-04-25 11:56:29

标签: clojure

如何将函数映射到列表中向量的第一个元素?

所以我有

 (["1" "sometexthere" ...]["2" "somemoretext" ...] ....)

我需要使用read-string将字符串数字转换为int(或long)。

3 个答案:

答案 0 :(得分:2)

您可以使用comp撰写功能:

(require '[clojure.edn :as edn])

(def items [["1" "sometexthere" ,,,] ["2" "somemoretext" ,,,] ,,,])

(map (comp edn/read-string first) items)
;=> (1 2 ,,,)

答案 1 :(得分:2)

如果您只想要结果列表,可以将该功能与firstmap结合使用,如评论中推荐的@leetwinski。

(map #(clojure.edn/read-string (first %)) items)

如果你想恢复你所拥有的结构,但是通过该功能映射的那些特定元素,update and update-in是你的朋友:

(map #(update % 0 clojure.edn/read-string) items)

对于更多涉及的转换,您可能也会对spectertransform感兴趣。

答案 2 :(得分:0)

我喜欢Elogent的comp解决方案,但我认为为了便于阅读,我更喜欢使用线程宏:

(map #(-> % first clojure.edn/read-string) items)

对于他/她自己,只是我个人的偏好。