haw*_*eye 10 lisp idiomatic clojure common-lisp
在Common Lisp中,您使用(null x)函数来检查空列表和nil值.
大多数逻辑上这映射到
(or (nil? x) (= '() x))
Run Code Online (Sandbox Code Playgroud)
在clojure.有人可以建议在Clojure中使用更惯用的方法吗?
Isa*_*aac 16
要像在Common Lisp中那样在Clojure中获得与空列表相同的结果,请使用该empty?
函数.此函数位于核心库中:无需导入.
它也是一个谓词,后缀为a ?
,使你在代码中所做的更清楚一点.
=> (empty? '())
true
=> (empty? '(1 2))
false
=> (empty? nil)
true
Run Code Online (Sandbox Code Playgroud)
正如jg faustus已经指出的那样,seq
可以用于类似的效果.
j-g*_*tus 10
seq也作为结束的测试,已经是惯用的
Run Code Online (Sandbox Code Playgroud)(when (seq coll) ...)
它的工作原理是因为(seq nil)
和(seq ())
都返回零.
因为nil
手段false
,你不需要一个明确的零测试.