You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Clojure技术问询:如何条件调用函数并默认执行其余函数

条件执行函数的优化实现

你的需求是:当指定条件为真时执行somefunc、firstfunc、secondfunc三个函数;条件为假时仅执行后两个函数。当前代码已经能实现该逻辑,但可以优化得更简洁清晰。

优化后的代码

(defn- publish
  [txn publisher domain-slug template first-published-at]
  ; 条件满足时执行somefunc,否则跳过
  (when (= 2 2)  ; 替换成你的实际判断条件
    (somefunc txn publisher))
  ; 以下两个函数无论条件是否成立都会执行
  (firstfunc txn publisher domain-slug first-published-at)
  (secondfunc txn publisher))

说明

  • when是Clojure里的语法糖,等价于(if 条件 (do 执行体)),比原代码的if+do写法更简洁,语义也更明确:仅当条件为真时执行后续表达式。
  • 函数内的表达式会按顺序依次执行,firstfunc和secondfunc不受前面条件判断的影响,始终会被调用,完全符合你的需求。

如果希望把所有执行逻辑包裹在一个do块里(不影响功能,仅代码结构更规整),也可以写成:

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

内容的提问来源于stack exchange,提问作者Bindiya H

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 14:35:36