我在Clojure的一本书中看到了这段代码。你能解释一下contains?
是如何运作的吗?
(contains? [1 2 3] 3)
;= false
(contains? [1 2 3] 2)
;= true
(contains? [1 2 3] 0)
;= true
答案 0 :(得分:5)
只需查看documentation:
<强>包含吗
(包含?coll键)
如果给定集合中存在key,则返回true,否则返回true 返回false。请注意,对于数字索引集合,例如 向量和Java数组,这测试数字键是否在 索引范围。 “包含?”操作恒定或对数时间; 它不会对值执行线性搜索。另见'some'。
因此,在您的示例中,(contains? [1 2 3] 3)
返回false
,因为集合[1 2 3]
不包含索引3
处的项目(这意味着(get [1 2 3] 3)
会返回nil
)。