SORU
23 ŞUBAT 2011, ÇARŞAMBA


Clojure oraya kolay bir şekilde liste türleri arasında dönüştürme.

Sık sık kendimi bir vektör istediğim zaman tembel bir listesini kullanarak, ve tersi buluyorum. Ayrıca, bazen gerçekten haritalar bir dizi istediğinde haritalar, bir vektör var. Bana bu türler arasında dönüştürme yardımcı olmak için herhangi bir yardımcı işlevler var mı?

CEVAP
24 ŞUBAT 2011, PERŞEMBE


Unutmayalım ki, güvenilir eski into sağlar birşey aldınız seqmümkün (liste, vektör, harita, set, sıralanmış-map) ve boş bir kap ister dolu, ve koyar into.

(into [] '(1 2 3 4)) ==> [1 2 3 4]         "have a lazy list and want a vector"
(into #{} [1 2 3 4]) ==> #{1 2 3 4}        "have a vector and want a set"
(into {} #{[1 2] [3 4]}) ==> {3 4, 1 2}    "have a set of vectors want a map"
(into #{} [{1 2} {3 4}]) ==> #{{1 2} {3 4}} "have a vector of maps want a set of maps"

into uygun yeni girişler bir koleksiyon Türüne göre ekleme için temel soyutlama olan conj, etrafında sarıcı. Bu çok güzel akış yapan Clojure prensip üzerine inşa edilirbirleştirilebilir soyutlamalarbu durumda 7* *toplama üzerine conj üstüne seq.

Yukarıdaki örnekler hala beste de, eğer alıcı olmak ne kadar geçti zamanında: temel soyutlamalar (seq conj) uygulanan tüm koleksiyonları (ve birçok Java koleksiyonları da), böylece daha yüksek soyutlamalar gerek yok endişelenecek çok özel verileri ile ilgili köşe durumda.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Digital Bounds

    Digital Boun

    19 Temmuz 2013
  • ELPRESADOR

    ELPRESADOR

    21 HAZİRAN 2008
  • monkophile

    monkophile

    25 Temmuz 2007