什么是"foo = bar || baz"的惯用语?

Jos*_*ver 18 idioms clojure

我想提供一个可以覆盖的默认值.我知道我可以使用三元组,如下所示:

(def foo (if (not (nil? bar)) bar baz))
Run Code Online (Sandbox Code Playgroud)

但是肯定在Clojure中有一种更惯用的方式来说"使用吧,或者如果bar是零则为baz.

有什么建议?

ber*_*eal 27

这将指派bar除非是nilfalse,和baz其他.

(def foo (or bar baz))
Run Code Online (Sandbox Code Playgroud)

编辑

如果您想要nil精确检查,可以稍微优化原始代码,如下所示:

(def foo (if (nil? bar) baz bar))
Run Code Online (Sandbox Code Playgroud)

我相信,这是最短的方式,虽然不是惯用的.