私は現在comp
と仕事をしようとしており、何かが足りなくなっているようです。 私がよく理解すれば、compは数学的構成と同じ順序で働くので、(comp g f)はg(f(x))に似ています。Clojure:私はコンプに何が欠けていますか?
ので、私は私がnilの値を持つエントリを削除するために、短いnil-key?
機能をremove
を使用したいという
(def m {:a 1 :b nil :c 3})
のようなマップを持っている想像:
(into {} (remove nil-key? m)) = {:a 1 :c 3}
は私がしようとしましたnil-keyを定義しますか?そのような:
(defn nil-key? []
(comp nil? second))
それは
は、たぶん私は、私は隠されたmap
あったthughtのでremove
機能がどのように機能するかを理解していない空のマップ(私は、フィルタを使用している場合、何のマップエントリは削除されません)を返します。
評価:ハッシュマップ 2上の1)第1の地図秒)値は 3 nilであると指示)が一致
を与える私は
(into {} (filter second m))
を行うことができしかし、またfalse
を除去され、そのしたくない。
もちろん、私は別のアプローチで簡単にやりますが、comp
の機能を理解したいと思います。
ありがとうございます!
EDIT
答え
(def nil-key?
(comp nil? second))
最終関数
(defn remove-nil-keys [map]
(->> (remove nil-key? map)
(into {})))
ああ私はそれについて考えることさえしませんでした。「実用的に」それは関数だが、プログラム的にはこれが論理的だと思うので、私はdefnを使いました。 –