use*_*102 10 contains vector clojure
我正在使用Closure Box进行一些Clojure教程,并输入以下代码:
user> (def stooges (vector "Moe" "Larry" "Curly"))
#'user/stooges
user> (contains? stooges "Moe")
false
Run Code Online (Sandbox Code Playgroud)
这不应该评估为真?任何帮助表示赞赏.
mik*_*era 14
这是一个常见的陷阱!我记得当我开始使用Clojure时会陷入这个问题:-)
包含?检查集合中是否存在索引(0,1,2等).
你可能想要这样的东西:
(some #{"Moe"} stooges)
=> "Moe" <counts as boolean true>
(some #{"Fred"} stooges)
=> nil <counts as boolean false>
Run Code Online (Sandbox Code Playgroud)
或者您可以定义自己的版本,例如:
(defn contains-value? [element coll]
(boolean (some #(= element %) coll)))
(contains-value? "Moe" stooges)
=> true
Run Code Online (Sandbox Code Playgroud)
Kyl*_*yle 11
向量类似于数组.如果集合中存在则contains?返回.你应该寻找"键/索引"0,1或2truekey
user=> (def stooges (vector "Moe" "Larry" "Curly"))
#'user/stooges
user=> (contains? stooges 1)
true
user=> (contains? stooges 5)
false
Run Code Online (Sandbox Code Playgroud)
如果你使用哈希...
user=> (def stooges {:moe "Moe" :larry "Larry" :curly "Curly"})
#'user/stooges
user=> (contains? stooges :moe)
true
user=> (contains? stooges :foo)
false
Run Code Online (Sandbox Code Playgroud)
正如迈克拉所说,你可能想要像clojure.core/some
包含?支持Set,如果你使用clojure-1.4
user=> (contains? #{:a, :b} :a)
true
user=> (contains? (set stooges) "Moe")
true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2937 次 |
| 最近记录: |