1
我目前正試圖與comp
一起工作,它看起來像我失去了一些東西。 如果我理解的很好,comp的工作順序與數學成分相同,所以(comp g f)就像g(f(x))。Clojure:我從comp中錯過了什麼?
想象我有一個像那樣的地圖
(def m {:a 1 :b nil :c 3})
我想用remove
用短nil-key?
函數刪除其具有零值的條目,所以:
(into {} (remove nil-key? m)) = {:a 1 :c 3}
我試着定義無鑰匙?這樣的:
(defn nil-key? []
(comp nil? second))
它返回一個空的映射(如果我使用過濾器,沒有映射條目被刪除)
也許我不明白remove
功能是如何工作的,因爲我thught有一個隱藏map
。
喜歡:1)的散列映射 2第一地圖第二)告知用戶,如果值是nil 3)得到匹配
我可以做
(into {} (filter second m))
但也除去false
,這我不想。
當然,我可以用一種不同的方法很容易地做到這一點,但我想了解comp
函數。
謝謝!
編輯
答案
(def nil-key?
(comp nil? second))
最終的功能
(defn remove-nil-keys [map]
(->> (remove nil-key? map)
(into {})))
噢是的我甚至沒有想到這一點,我用defn,因爲「務實」這是一個函數,但編程這似乎是邏輯,謝謝! –