怎么包含?在Clojure工作?

Tru*_* Ha 2 programming-languages clojure

我在一本Clojure书中看到了这段代码.你能解释一下我的contains?工作原理吗?

(contains? [1 2 3] 3)
;= false
(contains? [1 2 3] 2)
;= true
(contains? [1 2 3] 0)
;= true
Run Code Online (Sandbox Code Playgroud)

slo*_*oth 5

看看文档:

包含?

(包含?coll键)

如果给定集合中存在key,则返回true,否则返回false.请注意,对于像矢量和Java数组这样的数字索引集合,这将测试数字键是否在索引范围内."包含?" 操作恒定或对数时间; 它不会对值执行线性搜索.另见'some'.

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