Clojure:何时出租的快捷方式

Clojure:何时出租的快捷方式,clojure,functional-programming,clojurescript,Clojure,Functional Programming,Clojurescript,使用以下结构,可以进行真值测试(f1)并将结果保存到局部绑定变量a。如果真值测试为false,则整个表达式返回nil。如果它是真的(不是假的),则返回值将传递给第二个函数(f2),并返回其结果 (when-let [a (f1)] (f2 a)) 有捷径吗?我不需要变量a作为中间步骤。不需要,但编写一个变量很容易。我们将其命名为bind,原因无关紧要,除非您想了解monad: (defn bind [v f] (when v (f v))) (bind (f1) f2) 没有,但

使用以下结构,可以进行真值测试(f1)并将结果保存到局部绑定变量a。如果真值测试为false,则整个表达式返回nil。如果它是真的(不是假的),则返回值将传递给第二个函数(f2),并返回其结果

(when-let [a (f1)]
   (f2 a))

有捷径吗?我不需要变量a作为中间步骤。

不需要,但编写一个变量很容易。我们将其命名为
bind
,原因无关紧要,除非您想了解monad:

(defn bind [v f]
  (when v (f v)))

(bind (f1) f2)

没有,但你写一本很容易。我们将其命名为
bind
,原因无关紧要,除非您想了解monad:

(defn bind [v f]
  (when v (f v)))

(bind (f1) f2)

与核心库最接近的是


它的行为与let时的
稍有不同:因为线程的每个非
nil
值也会线程
false
。在实践中,这种行为差异从未作为问题出现在我身上,因为返回您想要传递给另一个函数的内容的函数如果没有得到任何内容,则返回
nil
,而不是
false

使用核心库可以得到的最接近值是

它的行为与let
时的
稍有不同:因为线程的每个非
nil
值也会线程
false
。在实践中,这种行为差异从未作为问题出现在我身上,因为返回您想要传递给另一个函数的内容的函数,如果没有得到任何内容,则返回
nil
,而不是
false