2

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

(contains? [1 2 3] 3)
;= false
(contains? [1 2 3] 2)
;= true
(contains? [1 2 3] 0)
;= true
4

1 回答 1

5

只需查看文档

包含?

(包含?coll键)

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

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

于 2013-07-19T10:00:53.807 回答