在Clojure中搜索记录的最简单方法

Zub*_*air 3 clojure

我在Clojure中有一张这样的地图:

(def stuff #{

        {:a "help" :b "goodbye"}
        {:c "help2" :b "goodbye"}
        {:a "steve" :b "goodbye"}
        {:c "hello2" :b "sue"}
    })
Run Code Online (Sandbox Code Playgroud)

:我想提供一个搜索,以便:

(search stuff "help")
Run Code Online (Sandbox Code Playgroud)

:会回来:

 #{
    {:a "help" :b "goodbye"}
    {:c "help2" :b "goodbye"}
}
Run Code Online (Sandbox Code Playgroud)

:最简单的方法是什么?

Ray*_*yne 7

user=> (defn search [s q] (select #(some (partial re-find (re-pattern q)) (vals %)) s))
#'user/search
user=> (search stuff "help")
#{{:a "help", :b "goodbye"} {:c "help2", :b "goodbye"}}
Run Code Online (Sandbox Code Playgroud)

这样就可以了.