これは簡単だと確信していますが、私はidomatic clojureへの道のりにはほとんど疑問がありません。たぶん私は何かを見逃していたが、clojureの地図ページを見て、私は解決策を見つけられなかった。キーと値のベクトルを持つときにマップを作成する
2つのベクトル(値以外のキーの1つ)がどのように効率的に(キーワード!)キーから値へのマップを作成しますか?
キーと値は以下の通りです:
(:year :month :day) (core/split "2013-02-18" #"-")
これは簡単だと確信していますが、私はidomatic clojureへの道のりにはほとんど疑問がありません。たぶん私は何かを見逃していたが、clojureの地図ページを見て、私は解決策を見つけられなかった。キーと値のベクトルを持つときにマップを作成する
2つのベクトル(値以外のキーの1つ)がどのように効率的に(キーワード!)キーから値へのマップを作成しますか?
キーと値は以下の通りです:
(:year :month :day) (core/split "2013-02-18" #"-")
自然な解決策はzipmap
を使用することです。それは実際にはかなり効率的である。このような小さなマップについては
(zipmap [:year :month :day] (clojure.string/split "2013-02-18" #"-"))
;= {:day "18", :month "02", :year "2013"}
。地図を大きくするには、zipmap
には現在は使用していないトランジェントを使用することをお勧めします。 JIRAのチケットには、私のパッチが添付されています:CLJ-1005。
もちろん、トランジェント対応のzipmap
を独自のコードベースに含めて、clojure.core
のものよりも優先して使用するだけで十分です。これは、あなたが大きな地図を圧縮している場合には非常に重要なことです。
このコードは、zipmap
のトランジェントを使用するパッチまたはClojureScriptコアライブラリからコピーできます。リリース1844以降のClojureScript sourceへのリンクです(この特定の関数はClojureで変更なしで使用できます)。
あなたが探しているものはzipmap
お返事ありがとうございました。これまでのClojureは爆発的で、私はOOプログラミングのバイザーから解放されていると感じています... – Core