模式匹配函数参数

问题描述 投票:0回答:1

我想让

foo
接受两个参数,如果第一个是
:ok
它应该返回第二个参数,否则第一个参数。

我想用这样的模式匹配来做:

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

但是不支持。我可以用类似的方式来做吗(使用模式匹配或某种方式)?

clojure pattern-matching
1个回答
0
投票

这是一种方法。

(ns tst.demo.core
  (:use tupelo.core tupelo.test))

(defn foo
  [a b]
  (if (= :ok a)
    b
    a))

(verify
  (is= (foo :ok   :something) :something)
  (is= (foo :nope :something) :nope))

如果超过 2 个案例,您可能需要使用

(cond ...)
表格。

使用我最喜欢的模板项目.

© www.soinside.com 2019 - 2024. All rights reserved.