मैं क्लोजर बनाने के लिए शाब्दिक बंधन 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
प्रिंट करता है "काउंट इज: एन" जहां एन हर बार इसे बढ़ाना कहा जाता है। हालाँकि, जब बाइट इस फ़ाइल को संकलित करता है, तो मुझे निम्नलिखित चेतावनी मिलती है:
In end of data:
mcve.el:11:1:Warning: the function ‘increase-count’ is not known to be
defined.
ऐसा लगता है कि increase-count
लेट-ब्लॉक के अंत में कॉल करने से पहले इसे हमेशा परिभाषित किया जाना चाहिए। क्या यह मामला नही है?
defun
वह नहीं करता जो आप सोचते हैं कि वह करता है, यह हमेशा एक शीर्ष-स्तरीय परिभाषा बनाता है। इस योजना के बाद भी