Clojure映射到命名键语法

Ste*_* B. 2 clojure

我猜这是一个简单的方法,我找不到.我想将一个映射传递给一个方法,该方法将命名值绑定到键,例如

(defn my-method [&{:keys [abc]}] ...

如果用例如调用,这可以工作

(我的方法:1:b 2:c 3)

但是我想用提供的地图来称呼它,例如看起来像的东西

(def m {:a 1:b 2:c 3})

(我的方法m)

有没有一种简单的方法可以将地图转换为所需的参数列表?

Ale*_*ler 5

它不漂亮但是:

(apply my-method (mapcat identity m))
Run Code Online (Sandbox Code Playgroud)

或者如评论中所建议的那样:

(apply my-method (apply concat m))
Run Code Online (Sandbox Code Playgroud)

  • `mapcat identity`很奇怪.有时我写`mapcat seq`因为它是最短的,但`apply concat`是传统的方式. (2认同)