İzin vs Clojure Bağlama
*compile-path*
ayarlanması için çalışır, çünkü onların farklı ve biri olmadığını anlıyorum. Ancak, farklı.) o yüzden yardıma ihtiyacım var.
let
verilen bağlar ile yeni bir kapsam oluşturur, ama 7**...?
CEVAP
let
lexically bazı değeri değişmez diğer kapsamlı oluşturur. binding
dinamik Var
bazıları için bağlayıcı kapsamı oluşturur.
Dinamik bağlama binding
form içindeki Kodu ve kod çağıran herhangi bir kod yerel sözlü kapsamda olmasa bile) yeni bağlama göreceği anlamına gelir.
Verilen:
user> (def ^:dynamic x 0)
#'user/x
binding
aslında bir dinamik Var
let
sadece bir gölgeler için yerel bir takma ad ile var bağlama oluşturur:
user> (binding [x 1] (var-get #'x))
1
user> (let [x 1] (var-get #'x))
0
binding
nitelikli adları kullanabilir Var
s üzerinde çalışır beri) let
değil
user> (binding [user/x 1] (var-get #'x))
1
user> (let [user/x 1] (var-get #'x))
; Evaluation aborted.
;; Can't let qualified name: user/x
let
-tanıttı bağlantıları kesilebilir. binding
-tanıttı bağlantıları olan iş parçacığı yerel değişken:
user> (binding [x 1] (set! x 2) x)
2
user> (let [x 1] (set! x 2) x)
; Evaluation aborted.
;; Invalid assignment target
Sözlü-dinamik etmektedir
user> (defn foo [] (println x))
#'user/foo
user> (binding [x 1] (foo))
1
nil
user> (let [x 1] (foo))
0
nil
Ayrıca 25*, let*bakın.
Nasıl birden çok seçime izin olmadan H...
Kaç AJAX (XmlHttpRequest) eşzamanlı is...
&; Artımlı bağlama " "?...
Düzenle ve Devam ediyor: "Değişik...
't değil o metin girişi ile JQuer...