Tupelo লাইব্রেরিতে এই উদ্দেশ্যে সুবিধাজনক ফাংশন রয়েছে । বিশেষ করে, ফাংশন contains-elem?
, contains-key?
এবং contains-val?
খুব দরকারী। সম্পূর্ণ ডকুমেন্টেশন এপিআই ডক্সে উপস্থিত রয়েছে ।
contains-elem?
সর্বাধিক জেনেরিক এবং এটি ভেক্টর বা অন্য কোনও ক্লোজারের জন্য তৈরি seq
:
(testing "vecs"
(let [coll (range 3)]
(isnt (contains-elem? coll -1))
(is (contains-elem? coll 0))
(is (contains-elem? coll 1))
(is (contains-elem? coll 2))
(isnt (contains-elem? coll 3))
(isnt (contains-elem? coll nil)))
(let [coll [ 1 :two "three" \4]]
(isnt (contains-elem? coll :no-way))
(isnt (contains-elem? coll nil))
(is (contains-elem? coll 1))
(is (contains-elem? coll :two))
(is (contains-elem? coll "three"))
(is (contains-elem? coll \4)))
(let [coll [:yes nil 3]]
(isnt (contains-elem? coll :no-way))
(is (contains-elem? coll :yes))
(is (contains-elem? coll nil))))
এখানে আমরা দেখতে পাই যে একটি পূর্ণসংখ্যা পরিসীমা বা একটি মিশ্র ভেক্টরের জন্য, contains-elem?
সংগ্রহের বিদ্যমান এবং অ-অধ্যক্ষ উভয় উপাদানগুলির জন্য প্রত্যাশা অনুযায়ী কাজ করে। মানচিত্রের জন্য, আমরা যে কোনও কী-মান জুটির জন্য অনুসন্ধান করতে পারি (লেন -2 ভেক্টর হিসাবে প্রকাশিত):
(testing "maps"
(let [coll {1 :two "three" \4}]
(isnt (contains-elem? coll nil ))
(isnt (contains-elem? coll [1 :no-way] ))
(is (contains-elem? coll [1 :two]))
(is (contains-elem? coll ["three" \4])))
(let [coll {1 nil "three" \4}]
(isnt (contains-elem? coll [nil 1] ))
(is (contains-elem? coll [1 nil] )))
(let [coll {nil 2 "three" \4}]
(isnt (contains-elem? coll [1 nil] ))
(is (contains-elem? coll [nil 2] ))))
সেটটি অনুসন্ধান করাও সহজ straight
(testing "sets"
(let [coll #{1 :two "three" \4}]
(isnt (contains-elem? coll :no-way))
(is (contains-elem? coll 1))
(is (contains-elem? coll :two))
(is (contains-elem? coll "three"))
(is (contains-elem? coll \4)))
(let [coll #{:yes nil}]
(isnt (contains-elem? coll :no-way))
(is (contains-elem? coll :yes))
(is (contains-elem? coll nil)))))
মানচিত্র এবং সেটগুলির জন্য, contains-key?
মানচিত্রের প্রবেশ বা একটি সেট উপাদান খুঁজে পেতে এটি ব্যবহার করা সহজ (এবং আরও দক্ষ) :
(deftest t-contains-key?
(is (contains-key? {:a 1 :b 2} :a))
(is (contains-key? {:a 1 :b 2} :b))
(isnt (contains-key? {:a 1 :b 2} :x))
(isnt (contains-key? {:a 1 :b 2} :c))
(isnt (contains-key? {:a 1 :b 2} 1))
(isnt (contains-key? {:a 1 :b 2} 2))
(is (contains-key? {:a 1 nil 2} nil))
(isnt (contains-key? {:a 1 :b nil} nil))
(isnt (contains-key? {:a 1 :b 2} nil))
(is (contains-key? #{:a 1 :b 2} :a))
(is (contains-key? #{:a 1 :b 2} :b))
(is (contains-key? #{:a 1 :b 2} 1))
(is (contains-key? #{:a 1 :b 2} 2))
(isnt (contains-key? #{:a 1 :b 2} :x))
(isnt (contains-key? #{:a 1 :b 2} :c))
(is (contains-key? #{:a 5 nil "hello"} nil))
(isnt (contains-key? #{:a 5 :doh! "hello"} nil))
(throws? (contains-key? [:a 1 :b 2] :a))
(throws? (contains-key? [:a 1 :b 2] 1)))
এবং, মানচিত্রের জন্য, আপনি এর সাথে মানগুলিও সন্ধান করতে পারেন contains-val?
:
(deftest t-contains-val?
(is (contains-val? {:a 1 :b 2} 1))
(is (contains-val? {:a 1 :b 2} 2))
(isnt (contains-val? {:a 1 :b 2} 0))
(isnt (contains-val? {:a 1 :b 2} 3))
(isnt (contains-val? {:a 1 :b 2} :a))
(isnt (contains-val? {:a 1 :b 2} :b))
(is (contains-val? {:a 1 :b nil} nil))
(isnt (contains-val? {:a 1 nil 2} nil))
(isnt (contains-val? {:a 1 :b 2} nil))
(throws? (contains-val? [:a 1 :b 2] 1))
(throws? (contains-val? #{:a 1 :b 2} 1)))
পরীক্ষায় দেখা গেছে, nil
মানগুলির সন্ধানের জন্য এই প্রতিটি ফাংশন সঠিকভাবে কাজ করে ।