13
|
Ralph java.is.for.desktop · 技术社区 · 14 年前 |
![]() |
1
4
基于nickik的回答和“或”clojure宏:
|
![]() |
2
24
你想要的是“或”宏。
http://clojuredocs.org/clojure_core/clojure.core/or 如果你只想要nil而不是false,请重写并将其命名为coalesce。 编辑: 这不能作为函数执行,因为函数首先计算其所有参数。这可以在Haskell中完成,因为函数是惰性的(不能百分之百确定Haskell的事情)。 |
![]() |
3
3
您可以使用1.2中的keep Introducted:
然而,为了防止对价值观的评估,我们需要一些本土的方法。
代码中涉及的更多但更漂亮:
|
![]() |
4
2
如果希望避免使用宏,可以使用coalesce的某些函数版本:
用法:
与规范不同,这将计算所有参数。使用
|
![]() |
5
0
也许我误解了这个问题,但这不只是第一个过滤元素吗?
user=> (first (filter (complement nil?) [nil false :foo])) false user=> (first (filter (complement nil?) [nil :foo])) :foo user=> (first (filter (complement nil?) [])) nil user=> (first (filter (complement nil?) nil)) nil 它可以缩短为: (defn coalesce [& vals] (first (filter (complement nil?) vals))) user=> (coalesce nil false :foo) false user=> (coalesce nil :foo) :foo user=> (coalesce nil) nil user=> (coalesce) nil |
![]() |
Ruaan Dreyer · 用php查询账户流水余额 7 年前 |
|
Pierre97 · 如何使用“与枢轴合并” 8 年前 |
![]() |
Daebak · Mysql将回退语言的连接保留为或条件 8 年前 |
![]() |
Stuart K. Smith · 选择缺少行或零值的查询? 9 年前 |