Saya ingin mendapatkan efek dari variabel statis dengan menggunakan defun
bagian dalam let
dengan 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-count
mencetak "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-count
harus selalu didefinisikan sebelum dipanggil pada akhir blok let. Bukankah ini masalahnya?
defun
tidak melakukan apa yang Anda pikirkan, ia selalu menciptakan definisi tingkat atas. Elisp memang bukan Skema ...