Die Dokumentation für Clojure with-local-vars
und with-bindings
reicht mir nicht aus, um die beiden zu unterscheiden. Irgendwelche Hinweise?
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%(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).
Tags und Links clojure dynamic-binding