Als «lexical-scoping» getaggte Fragen

3
Warum ist "lassen" mit lexikalischem Umfang schneller?
Beim Lesen des Quellcodes für das dolistMakro bin ich auf den folgenden Kommentar gestoßen. ;; Dies ist kein zuverlässiger Test, aber es spielt keine Rolle, da beide Semantiken akzeptabel sind, wobei eine bei dynamischem Scoping etwas schneller ist und die andere bei lexikalischem Scoping etwas schneller ist (und eine sauberere …


3
Defun inside let mit lexikalischer Bindung gibt die Warnung beim Kompilieren von Bytes aus, dass die Funktion nicht als definiert bekannt ist.
Ich möchte den Effekt einer statischen Variablen erhalten, indem ich defuninside of letmit lexikalischer Bindung verwende, um einen Abschluss zu erstellen. Beim Byte-Kompilieren der Datei erhalte ich jedoch eine Warnung. Mache ich etwas falsch oder gibt es eine Möglichkeit, diese Warnung zu unterdrücken? Ich habe ein MCVE erstellt: ;; -*- …


1
Umgang mit „Warnung: Zuordnung zu freien Variablen“, wenn bestimmte Bibliotheken aufgrund ihres Designs fehlen können
Byte-Kompilierung meines Modus: (defun dict-setup-expansions () "Add `dict-mode' specific expansions." (set (make-local-variable 'er/try-expand-list) (list #'dict-mark-article))) warnt: Warning: assignment to free variable `er/try-expand-list' Dies ist eine normale Situation, da er/try-expand-listsie in externa definiert ist. Bibliothek expand-regionunter http://elpa.gnu.org Meine Modusregistererweiterung zur expand-regionBibliothek, aber es ist in Ordnung, meinen Modus ohne expand-regionModus auszuführen …

1
Wie wird das variable Scoping für Makros bestimmt?
Nehmen Sie das folgende Beispielmakro, definiert in macro.el. (defmacro some-macro (&rest body) `(let ((some-variable 1)) ,@body)) Nehmen Sie die folgende Funktion, die in einer anderen Datei definiert ist function.el. (defun some-function () (some-macro (do-something))) Wann function.elwird Byte kompiliert, wird some-variableunter lexikalischer oder dynamischer Bindung gebunden? Ich verstehe, dass dies davon …

3
Warum funktioniert das Defvar-Scoping ohne Initialwert anders?
Angenommen, ich habe eine Datei mit dem Namen elisp-defvar-test.el: ;;; elisp-defvar-test.el --- -*- lexical-binding: t -*- (defvar my-dynamic-var) (defun f1 (x) "Should return X." (let ((my-dynamic-var x)) (f2))) (defun f2 () "Returns the current value of `my-dynamic-var'." my-dynamic-var) (provide 'elisp-dynamic-test) ;;; elisp-defvar-test.el ends here Ich lade diese Datei und gehe …

2
'Der Wert des Symbols als Variable ist ungültig' im Rückruf vom URL-Abruf
Wenn ich Folgendes ausführe, erhalte ich eine Fehlermeldung: (defun caller (func) (url-retrieve "http://m0smith.freeshell.org/" (lambda (status) (funcall func)))) (caller (lambda() (message "called"))) Ergebnis: error in process filter: Symbol's value as variable is void: func Was ist der beste Weg, um dieses Problem zu lösen? Grundsätzlich muss ich einen Rückruf von einem …
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.