«lexical-scoping» 태그된 질문

3
어휘 범위로 왜`빠르다 '?
dolist매크로 의 소스 코드를 읽는 동안 다음과 같은 주석이 나왔습니다. ;; 이것은 신뢰할 수있는 테스트는 아니지만 두 시맨틱 모두 허용 가능하기 때문에 중요하지 않습니다. 하나는 동적 범위 지정 에서는 약간 더 빠르며 다른 하나는 어휘 범위 지정에서는 약간 더 빠릅니다 (깨끗한 의미론을 가짐) . 이 스 니펫 (명확하게하기 위해 단순화했습니다)을 …

1
어휘 범위가있는 let-bound 변수에서 setq와 set quote가 다르게 작동하는 이유는 무엇입니까?
내 확장 중 하나에 버그가있어 결국 set예상대로 작동하지 않아 발생하는 것으로 나타났습니다 . ;; -*- lexical-binding: t -*- (let ((a nil)) (setq a t) (print a)) (let ((a nil)) (set 'a t) (print a)) emacs -Q --batch -l temp.el인쇄물로 실행할 때 : t nil 이것은 나에게 매우 이상해 보인다. 나는 …

3
어휘 바인딩이있는 let 내부의 defun은 바이트 컴파일 경고를 제공합니다. "함수가 정의되어 있지 않습니다"
defun내부 let어휘 바인딩을 사용하여 클로저를 작성 하여 정적 변수의 효과를 얻고 싶습니다 . 그러나 파일을 바이트 컴파일 할 때 경고 메시지가 나타납니다. 내가 잘못하고 있거나 그렇지 않은 경우이 경고를 억제하는 방법이 있습니까? MCVE를 만들었습니다. ;; -*- lexical-binding: t -*- (let ((count 0)) (defun increase-count () (interactive) (setq count (1+ count)) …

1
버퍼에 대한 어휘 바인딩을 가능하게하는 잠재적 인 함정은 무엇입니까?
이것은 이 질문 에서 어휘 바인딩 대 어휘 -let 에 대한 토론에서 영감을 얻었습니다 . 어휘 바인딩 은 사람들이 JavaScript와 같은 다른 언어로 익숙해 지면서 유용한 클로저를 가질 수있는 능력을 제공하므로 왜 항상 활성화하지 않겠습니까? 이전 Emacsen과의 하위 호환성을 가정한다고해서 레거시 코드 버퍼에서 활성화 할 경우 어떤 함정을 고려해야합니까?

1
설계 상 특정 라이브러리가 누락 될 수있는 경우 "경고 : 자유 변수에 할당"처리
내 모드의 바이트 컴파일 : (defun dict-setup-expansions () "Add `dict-mode' specific expansions." (set (make-local-variable 'er/try-expand-list) (list #'dict-mark-article))) 경고합니다 : Warning: assignment to free variable `er/try-expand-list' er/try-expand-listexterna에 정의되어 있기 때문에 이것은 정상적인 상황 입니다. http://elpa.gnu.org에expand-region 있는 도서관 expand-region라이브러리에 내 모드 등록 확장 프로그램 이지만 모드없이 expand-region모드 를 실행해도 됩니다. 경고를 처리하는 …

1
매크로의 변수 범위는 어떻게 결정됩니까?
에 정의 된 다음 예제 매크로를 사용하십시오 macro.el. (defmacro some-macro (&rest body) `(let ((some-variable 1)) ,@body)) 그리고 다음과 같은 기능을 가지고 다른 파일에 정의를 , function.el. (defun some-function () (some-macro (do-something))) 경우 function.el바이트가 컴파일되어 것이다 some-variable어휘 또는 동적 바인딩 하에서 구속? 파일 사용 여부에 따라 달라 -*- lexical-binding: t; -*-지므로 …

3
defvar 범위 지정이 initvalue없이 다르게 작동하는 이유는 무엇입니까?
다음과 같은 이름의 파일이 있다고 가정합니다 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 이 파일을로드 한 다음 스크래치 버퍼로 이동하여 다음을 …
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.