判断(if)中的nil值的简单方法是什么?

时间:2012-11-05 04:57:30

标签: if-statement clojure

我经常写如下:

(if (nil? a-value) another-value a-value)

是否有更简单的功能,如:

(if-nil? a-value another-value)

2 个答案:

答案 0 :(得分:4)

如果你想使用默认值,那么通常的习惯用法是使用or宏:

(or foo default-value)

default-value为假(nil或false)或foo whenener foo真实时(即除{{1}之外的任何非零值),将返回foo }})。

在这种情况下,您通常也可以使用if-not,因为nil被认为是错误的。当然,您需要注意实际的false值,因为这些值将被视为与nil相同。

作为最后一个选项,您始终可以使用宏来准确获取您要查找的false行为:

if-nil?

答案 1 :(得分:2)

为什么不简单地定义一个if-nil?宏:

(defmacro if-nil? [expr body] 
  `(let [e# ~expr] 
    (if (nil? e#) ~body e#)))