在Clojure中使用Seq函数

时间:2015-08-15 16:32:59

标签: clojure seq

manual of clojureseq我们读到:;; (seq x) is the recommended idiom for testing if a collection is not empty (every? seq ["1" [1] '(1) {:1 1} #{1}]) ;;=> true。但是空集合也返回nil,那么seq用于测试集合空虚的重点是什么呢?

2 个答案:

答案 0 :(得分:3)

从该页面顶部的文档:

  

seq也适用于Strings,本机Java数组(引用类型)和   任何实现Iterable的对象

因此,使用seq来测试空白是否适用于任何这些集合类型。因此,如示例所示,您可以获得一致的惯用方法来检查任何这些类型的空虚。

seq在空集合和nil上返回nil的事实使得检查更简单,而不是需要检查空或零。

答案 1 :(得分:3)

空集合不是假的,所以在测试中,如果它是空的,那将无关紧要:

(if '() "a" "b")
=> "a"

所以,如果你想做其他事情,如果它是空的:

(if (seq '()) "a" "b")
=> "b"