如何将函数映射到列表中向量的第一个元素?
所以我有
(["1" "sometexthere" ...]["2" "somemoretext" ...] ....)
我需要使用read-string将字符串数字转换为int(或long)。
答案 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)
如果您只想要结果列表,可以将该功能与first
和map
结合使用,如评论中推荐的@leetwinski。
(map #(clojure.edn/read-string (first %)) items)
如果你想恢复你所拥有的结构,但是通过该功能映射的那些特定元素,update
and update-in
是你的朋友:
(map #(update % 0 clojure.edn/read-string) items)
对于更多涉及的转换,您可能也会对specter的transform
感兴趣。
答案 2 :(得分:0)
我喜欢Elogent的comp
解决方案,但我认为为了便于阅读,我更喜欢使用线程宏:
(map #(-> % first clojure.edn/read-string) items)
对于他/她自己,只是我个人的偏好。