如何包含?在Clojure工作?

如何包含?在Clojure工作?,clojure,programming-languages,Clojure,Programming Languages,我在Clojure的一本书中发现了这段代码。你能给我解释一下contains?是如何工作的吗 (contains? [1 2 3] 3) ;= false (contains? [1 2 3] 2) ;= true (contains? [1 2 3] 0) ;= true 看看下面的例子: 包含? (包含?coll键) 如果给定集合中存在键,则返回true,否则返回true 返回false。请注意,对于数字索引的集合,如 向量和Java数组,测试数字键是否在 索引范围。”包含常数或对数时间;

我在Clojure的一本书中发现了这段代码。你能给我解释一下
contains?
是如何工作的吗

(contains? [1 2 3] 3)
;= false
(contains? [1 2 3] 2)
;= true
(contains? [1 2 3] 0)
;= true
看看下面的例子:

包含?

(包含?coll键)

如果给定集合中存在键,则返回true,否则返回true 返回false。请注意,对于数字索引的集合,如 向量和Java数组,测试数字键是否在 索引范围。”包含常数或对数时间; 它不会对值执行线性搜索。另见“一些”


因此,在您的示例中,
(contains?[1 2 3]3)
返回
false
,因为集合
[1 2 3]
在索引
3
处不包含项(这意味着
(get[1 2 3]3)
将返回
nil

因此名称有点混淆。Thx@TruongHa是的,如果一个集合包含一个元素,这是一个常见的错误。让所有人困惑:-)