ฉันต้องการได้รับผลกระทบของตัวแปรคงที่โดยใช้defun
ด้านในของlet
กับการผูกศัพท์เพื่อสร้างการปิด อย่างไรก็ตามเมื่อทำการคอมไพล์ไฟล์ฉันได้รับคำเตือน ฉันกำลังทำสิ่งผิดปกติหรือไม่ถ้าไม่มีวิธีระงับคำเตือนนี้หรือไม่?
ฉันสร้าง 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))
รหัสทำงานได้ตามที่คาดไว้: ฟังก์ชันจะincrease-count
พิมพ์ "Count is: n" โดยที่ n เพิ่มขึ้นทุกครั้งที่เรียกใช้ อย่างไรก็ตามเมื่อคอมไพล์ไฟล์นี้ฉันได้รับคำเตือนต่อไปนี้:
In end of data:
mcve.el:11:1:Warning: the function ‘increase-count’ is not known to be
defined.
ดูเหมือนว่าฉันincrease-count
ควรกำหนดไว้เสมอก่อนที่จะถูกเรียกที่ท้ายบล็อก นี่ไม่ใช่กรณีหรือไม่
defun
ไม่ได้ทำสิ่งที่คุณคิดว่ามันทำมันจะสร้างคำนิยามระดับบนสุดเสมอ Elisp นั้นไม่ใช่ Scheme ทั้งหมด ...