在Clojure中测试空向量的最佳方法是什么?我预计这将打印错误:
(if [] "true" "false")
Run Code Online (Sandbox Code Playgroud)
但事实并非如此.这样做:
(if (> (count []) 0) "true" "false")
Run Code Online (Sandbox Code Playgroud)
但是不实用 - 是否有较短的构造?
mik*_*era 18
我在Clojure代码中看到的检查非空列表的最常见方法是使用seq.如果集合为空,则返回nil,否则返回有效的seq对象.
用法示例:
(seq [])
=> nil
(seq nil)
=> nil
(seq [1 2 3])
=> (1 2 3) ;; note this is a "true value"
(if (seq [1 4 6]) "true" "false")
=> "true"
(if (seq []) "true" "false")
=> "false"
Run Code Online (Sandbox Code Playgroud)
你也可以用空?测试相反的(即测试空集).请注意空?在clojure源代码中实现,(not (seq coll))因此您可以安全地知道这两种方法基本相同.
| 归档时间: |
|
| 查看次数: |
6463 次 |
| 最近记录: |