Clojure 开发人员常犯的错误是什么? 我们如何避免这些错误?
例如,初到 Clojure 的人认为,contains?
的功能与 java.util.Collection#contains
的工作原理相同。然而,contains?
只有在使用像 map 和 sets 这样的索引集合时才能起到类似的作用,并且您正在寻找一个给定的键:
(contains? {:a 1 :b 2} :b)
;=> true
(contains? {:a 1 :b 2} 2)
;=> false
(contains? #{:a 1 :b 2} :b)
;=> true
当与数值索引的集合(向量、数组)一起使用时,contains?
只有检查给定的元素是否在索引的有效范围内(从零开始) :
(contains? [1 2 3 4] 4)
;=> false
(contains? [1 2 3 4] 0)
;=> true
如果给定一个列表,contains?
将永远不会返回 true。