2017-07-17 27 views
6

Tek bir harita girişi oluşturmak için dahili Clojure yolu (varsa) nedir?Clojure'da bir harita girişi oluşturun

Başka bir deyişle, (map-entry key value) gibi bir şey isterim. Diğer bir deyişle, sonuç (first {key value})'a eşdeğer veya daha az eşdeğer olmalıdır.

Açıklamalar: Tabii

  • , zaten googling çalıştı ve sadece map-entry? Ancak bu belge hiçbir bağlantılı kaynaklara sahip bulduk.
  • (first {1 2})'un bir vektör gibi göründüğü [1 2] döndürdüğünü biliyorum. Ancak:
(class (first {1 2})) 
; --> clojure.lang.MapEntry 
(class [1 2]) 
; --> clojure.lang.PersistentVector 
  • Ben kaynak koduna kontrol ettim hem MapEntry ve PersistentVectorAPersistentVector uzatmak farkındayım (böylece MapEntry daha çok ya da daha az zamanda bir vektördür). Ancak soru, Clojure kodundan MapEntry örneğini oluşturabilir miyim?
  • Son olarak, fakat en az değil: "hayır, Clojure'de bunu yapmak için inşa edilmiş bir yol yoktur" da geçerli bir cevaptır (ki şüpheliyim ki böyle bir durumda, yanlışlıkla bir şeyleri kaçırmadığımdan emin olmak istiyorum)).

cevap

3

Sadece sınıf adını belirtin: Ben yapabileceğiniz en iyi bir map-entry fonksiyonunu kendiniz tanımlamak söyleyebilirim .lang.MapEntry. Sadece kullanmak daha iyidir:

(defn map-entry [k v] (first {k v})) 
1

şöyle

(defn map-entry [k v] 
    (clojure.lang.MapEntry/create k v))