在向量集合

时间:2016-05-03 11:11:04

标签: clojure

我有一个关键字向量,我有一组带有实际数据的向量,我想要做的是搜索每个关键字,如果任何向量包含该关键字,则返回true。目前,我只针对一个关键字实现了实现,但我无法使其适用于关键字向量。我是Clojure的新手,所以任何建议都将受到赞赏。 到目前为止,这是我的代码:

(def results (apply map vector [["test1" "test2"] ["test3" "test4" "test5"]]))
(defn in?
  "true if coll contains elm"
  [coll]
  (some #(= "test4" %) coll))

  (println (map #(in? %) results))

但我想要这样的事情:

    (def searchwords ["test3" "test2"])
    (def results (apply map vector [["test1" "test2"] ["test3" "test4" "test5"]]))
    (defn in?
      "true if coll contains elm"
      [coll keyword]
      (some #(= keyword %) coll)) 

1 个答案:

答案 0 :(得分:0)

您可以尝试以下

(defn search
   [coll keyword]
   (println (flatten coll))
   (if (= (flatten coll) (list keyword))
     true))

(defn in?
   [coll keyword]
   (map #(search % %2) coll keyword))    

(in? results searchwords)
;=> (true)

仅当搜索字符为[“test2”]且结果为[[“test2”]]时才有效。 也许你可以想出一种使用in?迭代结果的方法。

P.s也是clojure的新手。