私はclojureにジェネリックなserilization関数を書こうとしています。私はマップの特定のキーを必要としますが、私は避けたい何この入力マップを文字列にシリアル化する
(defn serialize [input-map]
(map #(str (% :Name) "," (% :Title) "\n") input-map))
があるん今のようにいくつかのものを持って
(serialize input-map ",") Produces
Ashwani,Dev
呼び出されたときに、この
(def input-map {:Name "Ashwani" :Title "Dev"})
(defn serialize [input-map delimiter]
...rest of the code
)
のようなものそこにハードコーディングする名前とタイトル。これを達成するためにリフレクションや何かを使用するには何らかの方法が必要ですが、残念ながらこれを行うには十分なクロージャを知りません。
(require 'clojure.string)
(defn serialize [m sep] (str (clojure.string/join sep (map (fn [[_ v]] v) m)) "\n"))
(def input-map {:Name "Ashwani" :Title "Dev"})
(serialize input-map ",")
利回り
"Ashwani,Dev\n"
ない、これはですが、それはあなたのために働くべきか慣用確認:
"serialize"の使い方がわかりません。一般に、serializeは出力からデータを再構築することを意味しますが、キーを保存することはまったくありません。また、関数を汎用的にするが、キー自体を出力しない場合は、出力順を制御できるように関数にキーを提供する必要があります。 –
@Alex - 私が必要としていることは、過ちからの答えです。私が書いた質問は、私が達成したいことを明確にdemostrateします。あなたは "Serliaze"の単語に問題がある場合、それを "Foo"と呼ぶことができます。 – Ash
私の謝罪、私の前のコメントは、明らかに私の一般的な失敗である過度に重大であった。あなたが必要としている答えを得られなかった場合に備えて、より明確な質問を促すのを私の意向でした。あなたが必要なものを手に入れれば、それは素晴らしいものです。 –