Unterschied zwischen with-local-vars und with-bindings in Clojure

8

Die Dokumentation für Clojure with-local-vars und with-bindings reicht mir nicht aus, um die beiden zu unterscheiden. Irgendwelche Hinweise?

    
Reb.Cabin 28.08.2013, 17:50
quelle

2 Antworten

10

Neue var s werden vorübergehend von with-local-vars erstellt. Bestehende var s werden vorübergehend um with-bindings zurückgestuft. In beiden Fällen sind die Bindungen Thread-lokal.

Beachten Sie, dass with-bindings , soweit ich das beurteilen kann, in erster Linie als Helfer nützlich ist, um Bindungen aus einem anderen Kontext zu übergeben, indem eine von get-thread-bindings zurückgegebene Map verwendet wird. Die ähnliche Funktion binding wäre typischer, wenn keine Bindungen importiert werden.

Illustrative Beispiele:

%Vor%     
A. Webb 28.08.2013, 18:16
quelle
2

(with-bindings) erwartet, dass die Schlüssel der Bindungen map Vars sind, keine Symbole . Es verschiebt die gegebene Map von var / values ​​auf den Stapel lokaler Local Bindings und kümmert sich darum Entferne es, nachdem die angegebene Funktion zurückgegeben wurde. Es ist eine Low-Level-Funktion.

Mit

(with-local-vars) können Sie im imperativen Stil codieren (muting state).

    
Chiron 28.08.2013 18:17
quelle

Tags und Links