作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 Clojure 新手。我有一个 map 向量:
(def vecmap [{:a "hello"} {:a "hi"} {:a "hey"}])
基本上我想检查 map 向量中是否存在给定值。我用过这个:
(doseq [r vecmap] (get-in r [:a]))
这将为我获取键 :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")
此外,如果您特别想知道给定键在向量中是否具有非零值,则内置 some
专为该任务而设计:
+user=> (some :a vecmap)
"hello"
关于dictionary - 我如何将 doseq 返回的值放在 clojure 中的向量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38030268/
我是一名优秀的程序员,十分优秀!