Clojure with-local-vars
和with-bindings
的文檔不足以讓我區分這兩者。任何提示?Clojure中與本地變量和綁定之間的區別
8
A
回答
10
新var
s暫時由with-local-vars
創建。現有的var
s暫時被with-bindings
反彈。在這兩種情況下,綁定都是線程局部的。
請注意,據我所知,with-bindings
主要用作助手,以便通過使用由get-thread-bindings
返回的映射來傳遞來自另一個上下文的綁定。當不導入綁定時,類似的功能binding
會更典型。
說明性實例:
(binding [*out* (new java.io.StringWriter)]
(print "world!") (str "hello, " *out*))
;=> "hello, world!"
(with-local-vars [*out* (new java.io.StringWriter)]
(print "world!") (str "hello," *out*))
;=> world!"hello,#<Var: --unnamed-->"
(with-local-vars [foo (new java.io.StringWriter)]
(.write @foo "world") (str "hello, " @foo))
;=> "hello, world"
(binding [foo (new java.io.StringWriter)]
(.write @foo "world") (str "hello, " @foo))
;=> CompilerException java.lang.RuntimeException:
; Unable to resolve var: foo in this context...
2
(帶-綁定)預計綁定地圖的鍵是瓦爾,不符號。它將var/values的給定映射推送到線程本地綁定堆棧上,並注意在給定函數返回後將其刪除。這是一個低級功能。
(with-local-vars)允許您使用命令式樣式(變異狀態)進行編碼。
相關問題
- 1. PLSQL綁定變量和主機變量之間的區別
- 2. 綁定和綁定之間的區別
- 3. Clojure中-toString與.toString之間的區別
- 4. **變量和變量[] []之間的區別?
- 5. Clojure中definterface和defprocolocol之間的區別
- 6. 值與綁定之間的區別
- 7. Clojure(3)和3之間的區別
- 8. Ruby - 變量和@variable之間的區別
- 9. CLI/C++中綁定和非綁定代理之間的區別
- 10. erlang中的空列表和未綁定變量之間的區別?
- 11. (本地),'。'之間有區別嗎?和localhost?
- 12. x:綁定和綁定之間的區別
- 13. 綁定和x之間的區別:綁定
- 14. 區別:%% a和%variable%變量之間的區別是什麼?
- 15. 變量===值與值===變量之間的區別?
- 16. Ruby的類變量和實例變量之間的區別
- 17. 創建本地綁定的'let'或'letrec'和'define'之間有什麼區別?
- 18. 2 jquery綁定之間的區別
- 19. 最終變量和編譯時間常量之間的區別
- 20. TypeScript - 私有變量和受保護變量之間的區別
- 21. jQuery緩存元素,$變量和變量之間的區別?
- 22. if(!!變量)和if(變量)之間的區別?
- 23. 類變量和類實例變量之間的區別?
- 24. %變量%和!變量之間的區別!批處理文件
- 25. 將變量定義爲var $ a = $()和var a之間的區別?
- 26. 與clojure和clojurescript中的「take」的區別?
- 27. Kendo UI綁定中的$ {startDate}和#= startDate#之間的區別?
- 28. JSF中UIComponents的值和綁定標記之間的區別
- 29. jQuery中的綁定和點擊之間的確切區別?
- 30. bash變量之間的區別
我不認爲'動態綁定'正確地用於你的問題 – Chiron