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

Clojure中如何用模式匹配实现满足特定逻辑的foo函数?

解决方法

在Clojure中,你不能通过重复定义defn来实现模式匹配分支——后定义的函数会直接覆盖前一个。下面是几种符合需求的实现方式:

1. 核心内置条件判断(最简洁)

直接用if做相等判断,无需额外依赖:

(defn foo [key val]
  (if (= key :ok)
    val
    key))

2. 使用case宏(更清晰的分支表达)

case适合针对固定值的分支匹配,代码可读性更强:

(defn foo [key val]
  (case key
    :ok val
    key))

3. 模式匹配风格(借助core.match库)

如果想要更接近模式匹配的语法,可以使用Clojure的clojure.core.match库(需要先引入依赖):

(require '[clojure.core.match :as m])

(defn foo [key val]
  (m/match [key val]
    [:ok v] v
    [k _] k))

内容的提问来源于stack exchange,提问作者Max Smirnov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 20:27:06