簡體   English   中英

Clojure中是否有類似Python中的*或**的東西?

[英]is there something in clojure like * or ** in python?

我有一個向量,想在Clojure中調用一個函數。 該函數接受許多參數,並且我有矢量。

例如:

 (defn f [a b] (+ a b))

我有向量:

  [1 2]

我可以使用apply:

  (apply f [1 2])

但是我可以像在Python中那樣在Clojure中調用f嗎?

  (f *[1 2]) .

我的用例是我需要從地圖上dissoc一些鍵。 我想打電話(dissoc amap *keys) ,但是不支持。

我可以用apply

(apply dissoc (cons amap keys))

但這不是那么方便。

在Clojure中執行此操作的最佳方法是什么?

其他人都注意到, apply與Python的任意參數列表 完全等效。 在您的用例中,給定

(def a-map {1 2, 3 4, 5 6})
(def some-keys (range 5))

a-map dissoc some-keys

(apply dissoc a-map some-keys)
; {5 6}

我原來的解決方案也有效

(reduce dissoc a-map some-keys)
; {5 6}

但這僅是因為dissoc可以一次或一次全部接受其主要論點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM