2

私はクロージャを学ぼうとしています。

文字列の配列を返す関数を呼び出しています..

私が行った場合:

(let [items (get-all-items)]
    (println (type items))
    (items))

type値はitems次のようになりますclass clojure.lang.PersistentVectoritems

[["Dogs"] ["Cats"] ["Capybaras"] ["Pygmy Hedgehogs"]]

これを次のような形式のマップに変換したいと思います。

{ "Dogs" "Cats" "Capybaras" "Pygmy Hedgehogs" }

それは理にかなっていますか?Clojure マップには文字列のリストを含めることができますよね?

これを行っているのは、マップとして持っている場合、次のようにリストにペットがいるかどうかを確認できるためです。

(contains? pets "Dogs")
; assuming the map is stored in pets variable

petsがベクトルの場合は失敗します。

それで、それをマップに変換できる場合、どうすれば変換できますか? そうでない場合、ベクター内の何かを検索するにはどうすればよいですか?

(私は地図を扱うのが好きなので、そうしない強い理由がない限り、むしろ地図が欲しいです)

ps: で変換しようとしまし たが、それも機能しません。

4

2 に答える 2

2
(apply assoc {} (flatten [["Dogs"] ["Cats"] ["Capybaras"] ["Pygmy Hedgehogs"]]))
;;=> {"Capybaras" "Pygmy Hedgehogs", "Dogs" "Cats"}
于 2013-04-17T16:10:35.927 に答える