2016-05-03 7 views
0

私はベクトルfoのキーワードを持っています。実際のデータを持つベクトルの集合を持っています。それぞれのキーワードを検索し、そのベクトルが含まれているベクトルがあればtrueを返します。今のところ、1つのキーワードに対してのみ実装されていますが、キーワードのベクトルに対しては機能しません。私は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)) 

が、私はこのような何かしたい:ここ は、これまでの私のコードですsearchwordsは、[ "TEST2されている場合は、この唯一の作品次

(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) 

を試みることができる

(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)) 
+5

達成しようとしていることについてちょっと説明できますか?入力と出力の例が役に立ちます。 – OlegTheCat

+0

たとえば今のところ?関数が戻る(nil、true)、これは "test4"が2番目のベクトルで見つかったことを意味し、何度も達成したいのはいつでも(some#(=キーワード%)coll)はtrueを返して、再び検索されたキーワードを変更する。 – fishera

+0

あなたが実装する必要がある機能のための入力と期待される出力。質問にそれらを追加してください。 – OlegTheCat

答えて

0

を"]、結果は[[" test2 "]]です。 in?を使用して結果を反復処理する方法を見つけ出すことができます。

P.sもclojureに新しく追加されました。

関連する問題