«lexical-scoping» etiketlenmiş sorular

3
Neden sözcüksel kapsam ile daha hızlı “izin” verilir?
dolistMakro için kaynak kodu okurken , aşağıdaki yorumu koştum. ;; Bu güvenilir bir test değildir, fakat farketmez, çünkü her iki anlambilim de kabul edilebilir, diğeri dinamik kapsamlama ile biraz daha hızlı , diğeri ise daha hızlı (ve daha temiz anlambilimsel) ve sözcüksel kapsam ile . Hangi (bu açıklık için basitleştirdim) …


3
İçerideki Defun, lexical ciltleme ile bayt-derleme uyarısı verir, “fonksiyonun tanımlandığı bilinmemektedir”
Ben kullanarak statik değişkenin etkisini almak istiyorum defuniçeride ait letsözcük bir kapatma oluşturmak için bağlayıcı ile. Ancak, dosyayı bayt derlerken bir uyarı alıyorum. Yanlış bir şey mi yapıyorum, yoksa bu uyarıyı bastırmanın bir yolu var mı? Bir MCVE oluşturdum: ;; -*- lexical-binding: t -*- (let ((count 0)) (defun increase-count () …

1
Bir tampon için sözcük bağlamayı mümkün kılmanın potansiyel tuzakları nelerdir?
Bu, bu sorudaki sözcüksel bağlanma ile sözcüksel-let arasındaki tartışmadan esinlenmiştir . As sözcük bağlayıcı size yararlı kapanışları insanlar olanağı verir sen hep etkinleştirmediğinden neden JavaScript gibi diğer dillerde kullanılabilir? Eski Emacsen ile geriye dönük uyumluluk olduğunu varsaymak, eski kod arabelleklerinde etkinleştirilirse hangi tuzakları aramanız gerektiğiyle ilgili bir endişe değil mi?

1
Tasarımla belirli kütüphaneler eksik olduğunda “Uyarı: serbest değişkene atama” ile ilgilenme
Modumun bayt derlemesi: (defun dict-setup-expansions () "Add `dict-mode' specific expansions." (set (make-local-variable 'er/try-expand-list) (list #'dict-mark-article))) uyarı verir: Warning: assignment to free variable `er/try-expand-list' er/try-expand-listEksternada tanımlandığı için bu normal bir durumdur ; Kütüphane expand-regionolan http://elpa.gnu.org Benim mod kayıt uzantısı expand-regionkütüphaneye ama modumu mod olmadan çalıştırmak için sorun değil expand-region. Ben uyarı …

1
Makrolar için değişken kapsam belirlemesi nasıl belirlenir?
İçinde tanımlanmış olan aşağıdaki örnek makroyu ele alalım macro.el. (defmacro some-macro (&rest body) `(let ((some-variable 1)) ,@body)) Ve aşağıdaki işlevi, almak farklı bir dosyada tanımlanır , function.el. (defun some-function () (some-macro (do-something))) function.elBayt ne zaman derlenir, some-variablesözcüksel veya dinamik bağlama altında mı bağlanır? Bu dosyanın kullanıp kullanmadığına bağlı olduğunu anlıyorum …

3
Defvar kapsam belirleme neden bir girişim olmadan farklı çalışır?
elisp-defvar-test.elİçeren adında bir dosyam olduğunu varsayalım : ;;; 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 Bu dosyayı yüklemek ve sonra sıfırdan arabellek gidin …
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.