我正在嘗試類似於Python的func(*lst)
,但使用Clojure,並且不使用apply
函數。我確實有點傻的使用情況是:Clojure - 將列表元素作爲函數參數
{:k1 v1 (cond exp '(:k2 v2) :else '(:k3 v3))}
所以,如果EXP是真實的,在字典將包含{:k1 v1 :k2 v2}
,否則{:k1 v1 :k3 v3}
。我基本上想要一個Python風格的*
適用於返回值cond
。我嘗試使用',`和〜來玩數據/代碼模式,但沒有找到解決方案。我可以重複cond
的個人參數到底層的hash-map
,但是這種做法已經失敗了。
爲什麼?我只是覺得如果Clojure能夠輕鬆做到這一點會很酷。 :)
謝謝,我想。儘管應用函數最終不是那麼難看,但我只是喜歡大括號的形式。一個小的修正是,如果v2和v3是變量,它需要是'\'(:k2〜v2)' – Kevin
如果這就是你想要的,當然;我修正了你的實際代碼,而不是解釋我認爲你的意思。 '\'(:k2〜v2)'可以工作,但是'[:k2 v2]'更容易,如果這是你想要的。 – amalloy