通过以下结构,可以进行真值测试(f1)并将结果保存到本地绑定的变量a中。如果真值测试是错误的,则整个表达式返回零。如果它是真的(而不是假的),则返回的值被传递给第二个函数(f2),并返回结果。Clojure:when-let的快捷方式
(when-let [a (f1)]
(f2 a))
有没有捷径?我不需要变量a作为中间步骤。
通过以下结构,可以进行真值测试(f1)并将结果保存到本地绑定的变量a中。如果真值测试是错误的,则整个表达式返回零。如果它是真的(而不是假的),则返回的值被传递给第二个函数(f2),并返回结果。Clojure:when-let的快捷方式
(when-let [a (f1)]
(f2 a))
有没有捷径?我不需要变量a作为中间步骤。
不,但是写起来很容易。我们叫它bind
,为除非你想阅读有关单子那没关系的原因:
(defn bind [v f]
(when v (f v)))
(bind (f1) f2)