8

これは簡単だと思いますが、イドマティックなクロージュアへの道のりで多くの小さな質問があると思います. 何かを見逃したのかもしれませんが、clojure マップ ページを見ても、解決策が見つかりませんでした。

2 つのベクトル (値のキーの 1 つ) が与えられた場合、キーから値へのマップをどのように効率的に (キーワード!) 作成しますか?

キーと値は次のとおりです。

(:year :month :day) (core/split "2013-02-18" #"-")
4

2 に答える 2

20

自然な解決策は、次を使用すること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 で使用できます)。

于 2013-07-20T09:16:22.050 に答える
2

あなたが探しているのはzipmapです

于 2013-07-20T09:17:09.413 に答える