Saya ingin mendapatkan efek dari variabel statis dengan menggunakan defunbagian dalam letdengan pengikatan leksikal untuk membuat penutupan. Namun, saat byte-compile file, saya mendapat peringatan. Apakah saya melakukan sesuatu yang salah, atau jika tidak, adakah cara untuk menekan peringatan ini?
Saya telah membuat MCVE:
;; -*- 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))
Kode berfungsi seperti yang diharapkan: fungsi increase-countmencetak "Hitung adalah: n" di mana n bertambah setiap kali dipanggil. Namun, ketika byte-compiling file ini, saya mendapatkan peringatan berikut:
In end of data:
mcve.el:11:1:Warning: the function ‘increase-count’ is not known to be
defined.
Sepertinya saya yang increase-countharus selalu didefinisikan sebelum dipanggil pada akhir blok let. Bukankah ini masalahnya?
defuntidak melakukan apa yang Anda pikirkan, ia selalu menciptakan definisi tingkat atas. Elisp memang bukan Skema ...