SORU
4 NİSAN 2009, CUMARTESİ


Clojure anahtar kelime argümanlar

Common Lisp bunu yapabilirsiniz:

(defun foo (bar &key baz quux)
  (list bar baz quux))

(foo 1 :quux 3 :baz 2) ; => (1 2 3)

Clojure anahtar kelime argümanlar yok. Bir alternatif bu

(defn foo [bar {:keys [baz quux]}] 
  (list bar baz quux))

(foo 1 {:quux 3 :baz 2}) ; => (1 2 3)

Çok fazla iç içe parantez yazın ve her zaman okumak zorunda değil. Ayrıca karma-harita düz bir liste yerine bir argüman olarak kabul edilmesi için bir açık gerektirir.

Birisi noktalama bomba patlattı görünmüyor bu anahtar kelime argümanlar en deyimsel Clojure karşılığı nedir?

CEVAP
19 EKİM 2010, Salı


Şimdi tam var Clojure 1.2 için bu cevap güncelleştirme için varsayılan destructuring binding göster formları tarafından sağlanan arg destek anahtar kelime:

user> (defn foo [bar &{ :keys [baz quux] 
                        :or {baz "baz_default" quux "quux_default"}}]
         (list bar baz quux))
#'user/foo

user> (foo 1 :quux 3)
(1 "baz_default" 3)

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Ayite Atiwoto (superjiffrey)

    Ayite Atiwot

    29 EYLÜL 2010
  • RaquelGamesBR

    RaquelGamesB

    20 HAZİRAN 2009
  • UnboxTechnology

    UnboxTechnol

    20 Ocak 2011