我有一个向量,想要在Clojure中调用一个函数.该函数接受许多参数,我有矢量.
例如:
(defn f [a b] (+ a b))
Run Code Online (Sandbox Code Playgroud)
我有矢量:
[1 2]
Run Code Online (Sandbox Code Playgroud)
我可以用申请:
(apply f [1 2])
Run Code Online (Sandbox Code Playgroud)
但是我可以f像在python中一样调用Clojure吗?
(f *[1 2]) .
Run Code Online (Sandbox Code Playgroud)
我的用例是我需要dissoc来自地图的一些键.我想打电话(dissoc amap *keys),但不支持.
我可以用 apply
(apply dissoc (cons amap keys))
Run Code Online (Sandbox Code Playgroud)
但它不太方便.
在Clojure中最好的方法是什么?
正如其他人注意到的那样,apply它完全等同于Python的任意参数列表.在你的用例中给出
(def a-map {1 2, 3 4, 5 6})
(def some-keys (range 5))
Run Code Online (Sandbox Code Playgroud)
以dissoc some-keys从a-map
(apply dissoc a-map some-keys)
; {5 6}
Run Code Online (Sandbox Code Playgroud)
我的原始解决方案也有效
(reduce dissoc a-map some-keys)
; {5 6}
Run Code Online (Sandbox Code Playgroud)
但只是因为dissoc可以一次一个地或一次性地获取其关键参数.
| 归档时间: |
|
| 查看次数: |
185 次 |
| 最近记录: |