Câu hỏi được gắn thẻ «lexical-scoping»



3
Defun bên trong let with ràng buộc từ vựng đưa ra cảnh báo biên dịch byte, chức năng không được xác định là xác định
Tôi muốn có được hiệu ứng của một biến tĩnh bằng cách sử dụng defunbên trong letvới ràng buộc từ vựng để tạo ra một bao đóng. Tuy nhiên, khi biên dịch byte tệp, tôi nhận được cảnh báo. Tôi đang làm gì đó sai, hoặc nếu không, có cách …


1
Xử lý cảnh báo của VÒNG: gán cho biến miễn phí, khi các thư viện nhất định có thể bị thiếu
Biên dịch byte của chế độ của tôi: (defun dict-setup-expansions () "Add `dict-mode' specific expansions." (set (make-local-variable 'er/try-expand-list) (list #'dict-mark-article))) đưa ra cảnh báo: Warning: assignment to free variable `er/try-expand-list' Đây là tình huống bình thường vì er/try-expand-listđược định nghĩa trong externa; thư viện expand-regiontại http://elpa.gnu.org Chế độ của tôi …

1
Làm thế nào là phạm vi biến cho các macro được xác định?
Lấy macro ví dụ sau, được định nghĩa trong macro.el. (defmacro some-macro (&rest body) `(let ((some-variable 1)) ,@body)) Và mất chức năng sau đây, được định nghĩa trong một tập tin khác nhau , function.el. (defun some-function () (some-macro (do-something))) Khi function.elđược biên dịch byte, sẽ some-variablebị ràng buộc theo …

3
Tại sao phạm vi defvar hoạt động khác nhau mà không có một giá trị?
Giả sử tôi có một tệp có tên 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 Tôi tải tập tin này và …

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.