我想编写一个函数,如果给定的集合不为空,则返回布尔值 true,否则返回 false。
我可以做
defn ..
(boolean (seq coll))
or
defn ..
(not (empty? coll))
由于我是 clojure 的新手,我最初倾向于选择#2(更具可读性),但是 clojure api 参考empty?
明确表示使用习语(seq coll)
代替(not (empty? coll))
,也许是为了避免双重否定。
我想知道 clojure 的方法是什么来检查集合是否非空并返回布尔值 true/false。
根据 Joy of Clojure 的说法,nil 双关语 与seq
是惯用的:
(defn print-seq [s]
(when (seq s)
(prn (first s))
(recur (rest s))))
“...指某东西的用途seq
作为终止条件是测试序列是否为空的惯用方法。如果我们[在上面的例子中]只是测试s
代替(seq s)
,那么即使对于空集合也不会发生终止条件......”
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)