これは簡単だと思いますが、イドマティックなクロージュアへの道のりで多くの小さな質問があると思います. 何かを見逃したのかもしれませんが、clojure マップ ページを見ても、解決策が見つかりませんでした。
2 つのベクトル (値のキーの 1 つ) が与えられた場合、キーから値へのマップをどのように効率的に (キーワード!) 作成しますか?
キーと値は次のとおりです。
(:year :month :day) (core/split "2013-02-18" #"-")
これは簡単だと思いますが、イドマティックなクロージュアへの道のりで多くの小さな質問があると思います. 何かを見逃したのかもしれませんが、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。
もちろん、transient-enabledzipmap
を自分のコードベースに含めて、 のコードベースよりも優先して使用するのは簡単clojure.core
です。大きなマップを圧縮する場合、これは非常に重要なことです。
コードは、パッチまたは ClojureScript コア ライブラリからコピーできますzipmap
。ここにリリース 1844 のClojureScript ソースへのリンクがあります (この特定の関数は変更なしで Clojure で使用できます)。
あなたが探しているのはzipmapです