Clojure - adlandırılmış bağımsız değişkenleri
Clojure adlandırılmış bağımsız değişkenleri var mı? Eğer öyleyse, küçük bir örnek verebilir misiniz?
CEVAP
Clojure 1.2, haritasını destructure gibi rest
bağımsız destructure. Bu non-konumsal anahtar kelime argümanlar adlı yapabileceğin anlamına gelir. İşte bir örnek:
user> (defn blah [& {:keys [key1 key2 key3]}] (str key1 key2 key3))
#'user/blah
user> (blah :key1 "Hai" :key2 " there" :key3 10)
"Hai there10"
user> (blah :key1 "Hai" :key2 " there")
"Hai there"
user> (defn blah [& {:keys [key1 key2 key3] :as everything}] everything)
#'user/blah
user> (blah :key1 "Hai" :key2 " there")
{:key2 " there", :key1 "Hai"}
Hiçbir şeyClojure haritası yukarıda gösterildiği gibi bir işlevin bağımsız değişken listesinde yapılabilir destructuring süre yapabilirsiniz. Kullanma da dahil olmak üzere :ya bu gibi argümanlar için varsayılan tanımlamak için:
user> (defn blah [& {:keys [key1 key2 key3] :or {key3 10}}] (str key1 key2 key3))
#'user/blah
user> (blah :key1 "Hai" :key2 " there")
"Hai there10"
Ama bu Clojure 1.2. Alternatif olarak, eski sürümleri, aynı şeyi taklit etmek için bunu yapabilirsiniz:
user> (defn blah [& rest] (let [{:keys [key1 key2 key3] :or {key3 10}} (apply hash-map rest)] (str key1 key2 key3)))
#'user/blah
user> (blah :key1 "Hai" :key2 " there")
"Hai there10"
ve aynı şekilde çalışır genelde.
Ve ayrıca anahtar kelime argümanlar önce gelen konumsal bağımsız değişkenler olabilir:
user> (defn blah [x y & {:keys [key1 key2 key3] :or {key3 10}}] (str x y key1 key2 key3))
#'user/blah
user> (blah "x" "Y" :key1 "Hai" :key2 " there")
"xYHai there10"
Bu isteğe bağlı değildir ve sağlanacak.
Aslında toplama Clojure herhangi gibi rest
bağımsız destructure.
user> (defn blah [& [one two & more]] (str one two "and the rest: " more))
#'user/blah
user> (blah 1 2 "ressssssst")
"12and the rest: (\"ressssssst\")"
Hatta Clojure 1.1 bu tür bir şey yapabilirsin. Anahtar kelime argümanlar tarzı göster destructuring sadece 1.2 de olsa geldi.
Kaç oluşturucu bağımsız değişkenleri ç...
Olan yöntem bağımsız değişkenleri mant...
Çoklu havuzu Python.birden çok bağımsı...
C varsayılan bağımsız değişkenleri...
Nasıl Clojure içinde işlev bağımsız de...