neh*_*eha 1 dictionary vector clojure
我是Clojure的新手.我有一张地图矢量:
(def vecmap [{:a "hello"} {:a "hi"} {:a "hey"}])
Run Code Online (Sandbox Code Playgroud)
基本上我想检查地图矢量中是否存在给定值.我用过这个:
(doseq [r vecmap] (get-in r [:a]))
Run Code Online (Sandbox Code Playgroud)
这将获得关键的所有价值:a
.但后来我想将所有这些值放在一个向量中,以便我可以使用contains检查向量中是否存在给定值?我怎么能在Clojure中做到这一点?
doseq
回报nil
.期.它无法返回任何其他值.
如果要为顺序输入中的每个项生成值,请for
接受与doseq相同的语法,并返回lazyseq而不是nil
.
+user=> (def vecmap [{:a "hello"} {:a "hi"} {:a "hey"}])
#'user/vecmap
+user=> (for [r vecmap] (get-in r [:a]))
("hello" "hi" "hey")
Run Code Online (Sandbox Code Playgroud)
此外,如果您特别想知道给定键是否在向量中具有非零值,some
则为该任务创建内置:
+user=> (some :a vecmap)
"hello"
Run Code Online (Sandbox Code Playgroud)