为什么要使用 Clojure conatins?举止如此奇怪?

why Clojure conatins? behave so strangely?

为什么 clojure 第一个输出 true 而第二个输出 false

(def myset [3 5 7 11 13 17 19])
(defn check-n
[n]
(contains? myset n))

(check-n 1)
(check-n 20)

contains? 是检查集合中键的函数。它可以与地图一起使用:

(contains? {:a 1 :b 2} :a)
=> true
(contains? {:a 1 :b 2} :c)
=> false

或者使用 vector- 在这种情况下,它检查 vector 是否包含给定的 index:

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

如果要检查数字的出现,请使用 Java 中的 .contains:

(.contains [1 2 3] 3)
=> true

some 集合用作谓词:

(some #{3} [1 2 3])
=> 3
(some #{4} [1 2 3])
=> nil