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,因为“务实”这是一个函数,但编程这似乎是逻辑,谢谢! –