返回第一个非空/空值?

Geu*_*uis 7 clojure

我有2个绑定我正在调用路径和回调.

我要做的是返回第一个非空的.在javascript中它看起来像这样:

var final = path || callback || "";
Run Code Online (Sandbox Code Playgroud)

我怎么在clojure中这样做?

我正在看"某些"功能,但我无法弄清楚如何将compjure.string/blank检查结合起来.我目前将此作为测试,但不起作用.在这种情况下,我认为它应该返回零.

(some (clojure.string/blank?) ["1" "2" "3"])
Run Code Online (Sandbox Code Playgroud)

在这种情况下,它应该返回2

(some (clojure.string/blank?) ["" "2" "3"])
Run Code Online (Sandbox Code Playgroud)

Ale*_*lex 8

(first (filter (complement clojure.string/blank?) ["" "a" "b"]))
Run Code Online (Sandbox Code Playgroud)

编辑:正如评论中指出的那样,(filter (complement p) ...)可以改写为(remove p ...):

(first (remove clojure.string/blank? ["" "a" "b"]))
Run Code Online (Sandbox Code Playgroud)

  • 会`(首先(删除clojure.string/blank?["""a""b"]))`工作? (2认同)
  • 另一种写法:`(first(filter not-empty [“”“ a”“ b”])))。 (2认同)

Jac*_*cob 5

如果您很幸运拥有由 nil 和/或 false 表示的“空值”,您可以使用:

(or nil false "2" "3")
Run Code Online (Sandbox Code Playgroud)

哪个会返回"2"

与您的 JavaScript 示例等效的是:

(let [final (or path callback "")]
  (println final))
Run Code Online (Sandbox Code Playgroud)