从manual of clojure约seq
我们读到:;; (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
用于测试集合空虚的重点是什么呢?
答案 0 :(得分:3)
从该页面顶部的文档:
seq也适用于Strings,本机Java数组(引用类型)和 任何实现Iterable的对象
因此,使用seq来测试空白是否适用于任何这些集合类型。因此,如示例所示,您可以获得一致的惯用方法来检查任何这些类型的空虚。
seq在空集合和nil
上返回nil
的事实使得检查更简单,而不是需要检查空或零。
答案 1 :(得分:3)
空集合不是假的,所以在测试中,如果它是空的,那将无关紧要:
(if '() "a" "b")
=> "a"
所以,如果你想做其他事情,如果它是空的:
(if (seq '()) "a" "b")
=> "b"