我寫了一個函數來計算兩組的對稱差異(4clojure站點上的其中一個問題)。該函數通過了單元測試,但它不像我想的那樣乾淨,因爲我有重複的代碼。如何在Clojure中的函數中定義函數並引用該函數?
(fn [x y] (set (concat
(keep-indexed #(if (nil? (get y %2)) %2) x)
(keep-indexed #(if (nil? (get x %2)) %2) y))))
很顯然,我寧願是這樣的:
(fn [x y] (set (concat (diff x y) (diff y x))))
凡DIFF函數的定義和引用的「內聯」,但我不知道該怎麼做,在一個FN塊。
你實際上可以在4clojure上看到其他人的答案(一旦你完成了這個問題),它應該讓你知道如何整理你自己的嘗試。 –