Bir liste olup olmadığını Test Clojure belirli bir değer içerir
Bir liste Clojure verilen bir değer içerip içermediğini test etmek için en iyi yolu nedir?
Özellikle, içeren davranışı? şu anda bana kafa karıştırıcı
(contains? '(100 101 102) 101) => false
Belli ki geçiş için basit bir fonksiyon listesi yazmak ve eşitlik için test olabilir, ama kesinlikle bunu yapmak için standart bir yolu olmalı?
CEVAP
Ah, contains?
... ilk beş sözde bir yeniden SSS: Clojure.
Yokdeğilbir koleksiyonu bir değer içerip içermediğini kontrol edin; bu bir toplama bir anahtarı içerip içermediğini bir öğe get
ile alınamadı ya da diğer bir deyişle, olup olmadığını denetler. Bu mantıklı için ayarlar (hangi olabilir düşünce olarak yapmak arasında bir ayrım anahtarlar ve değerler), haritalar ((contains? {:foo 1} :foo)
true
) ve vektörler (ama unutmayın (contains? [:foo :bar] 0)
true
, çünkü anahtarları burada endeks ve vektöründe soru mu "içeren" Endeksi 0
!).
Karışıklık eklemek için, sense contains?
, arama yapmaz durumlarda sadece dönüş false
; (contains? :foo 1)
Bu durumda olurve ayrıca(contains? '(100 101 102) 101)
.
Yapmaya çalıştığın şeyi yapmak için doğru bir yolu aşağıdaki gibidir:
; most of the time this works
(some #{101} '(100 101 102))
Ararken bir sürü öğeleri kullanabilirsiniz daha büyük bir set; ararken false
/ nil
kullanabilirsiniz false?
/ nil?
çünkü ... (#{x} x)
döner x
böylece (#{nil} nil)
nil
; ararken birden çok öğeleri bazıları da neden olabilir false
nil
kullanabilirsiniz
(some (zipmap [...the items...] (repeat true)) the-collection)
(Öğeleri koleksiyonu her türlü zipmap
geçirilebilir unutmayın.)
Eğer bir değişken bir liste olup olmad...
Nasıl bir liste ve tek bir truthy değe...
Nasıl belirli bir Linux 32 bit veya 64...
Hızlı eğer bir tam sayı iki tamsayı (d...
Nasıl bir çift Nan'a eşit olup olmadığ...