我定義了一個需要映射的函數。我想使用解構來訪問這些值。但是,我也想檢查是否有任何使用的密鑰。clojure中的解構圖 - 未使用的密鑰
因此,例如像...
(defun func1 [{:keys [a b c] :rest rest}]
(println a b c)
(println rest))
(func1 {:a 1 :b 2 :c 3 :d 4})
這將打印
1 2 3
4
,我想這是,如果剩下的就是不爲空,這可能是一個錯誤的原因,我想表示。我知道:作爲,我可以使用。但後來我需要存儲有效密鑰的列表兩次。
我錯過了什麼嗎?
菲爾
我的邏輯是,如果他們通過了錯誤的鍵,這可能是一個錯誤。我使用了一張地圖,因爲它似乎是一個足夠明智的選擇。不知道什麼是更好的選擇。該功能需要取任意數量(包括無)的一組定義參數。你會建議什麼數據結構? –
當然,在這種情況下Map仍然是最好的,但我仍然不明白爲什麼你會限制自己(或者更確切地說:你的用戶!)。這不一定是他們傳遞了「錯誤」的鍵,而是他們有一個更大的屬性映射,而這些屬性並不一定只針對你的函數。 – Cubic
啊,是的,這是真的。我正在實施什麼是DSL。因此,在這種情況下,這些值很可能是由用戶直接編寫的,而不是從別處生成的。所以他們不太可能擁有大型屬性地圖。如果他們這樣做,那麼他們總是可以使用選擇鍵來解決我的限制。 –