SORU
14 Temmuz 2010, ÇARŞAMBA


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
14 Temmuz 2010, ÇARŞAMBA


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 / nilkullanabilirsiniz 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.)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • boniver

    boniver

    17 NİSAN 2006
  • case LianLi

    case LianLi

    28 Mayıs 2010
  • Gimpology.com Video Tutorials

    Gimpology.co

    3 ŞUBAT 2008