Ben kullanarak statik değişkenin etkisini almak istiyorum defun
içeride ait let
sö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 ()
(interactive)
(setq count (1+ count))
(message "Count is: %d" count))
;; The warning happens here.
(increase-count))
Kod beklendiği gibi çalışır: işlev increase-count
"Count is: n" çıktısını alır ve burada her çağrıldığında n artar. Ancak, bu dosyayı bayt derlerken, aşağıdaki uyarıyı alıyorum:
In end of data:
mcve.el:11:1:Warning: the function ‘increase-count’ is not known to be
defined.
Bana öyle geliyor ki increase-count
, her zaman izin bloğunun sonunda çağrılmadan önce tanımlanmalıdır. Durum böyle değil mi?
defun
düşündüğünüzü yapmaz, her zaman üst düzey bir tanım oluşturur. Elisp sonuçta Şema değil ...