Clojure:默认情况下,有条件地调用一个函数和其他函数



我想有条件地执行一个函数,默认情况下执行其他函数,而不管第一个条件是true还是false。

例如:`

(defn- publish
[txn publisher domain-slug template first-published-at]
(if (= 2 2) 
(do (somefunc txn publisher)))
(firstfunc txn publisher domain-slug first-published-at)
(secondfunc txn publisher)
)

`

如果为true,则执行所有三个函数,如果为false,则执行最后两个函数。

when用于条件副作用。例如

(defn- publish
[txn publisher domain-slug template first-published-at]
(when (= 2 2) 
(somefunc txn publisher))
(firstfunc txn publisher domain-slug first-published-at)
(secondfunc txn publisher))

您可以尝试

(cond 
(= 2 2) (some-fn arg1 arg2)
:else  (do
(firstfunc txn publisher domain-slug first-published-at)
(secondfunc txn publisher)))

请参阅此处https://clojuredocs.org/clojure.core/cond用于语法

最新更新