2015-07-04 7 views
6

का उपयोग नहीं किया गया है मुझे एसबीसीएल कंपाइलर से चेतावनी मिल रही है, कि एक चर परिभाषित किया गया है लेकिन इसका उपयोग नहीं किया जाता है। और संकलक सही है। मैं चेतावनी से छुटकारा पाना चाहता हूं, लेकिन यह नहीं जानता कि इसे कैसे किया जाए।एसबीसीएल चेतावनी है कि एक चर परिभाषित किया गया है लेकिन कभी भी

(defun worker-1 (context p) 
    ;; check context (make use of context argument) 
    (if context 
     (print p))) 

(defun worker-2 (context p) 
    ;; don't care about context 
    ;; will throw a warning about unused argument 
    (print p)) 

;; 
;; calls a given worker with context and p 
;; doesn't know which arguments will be used by the 
;; implementation of the called worker 
(defun do-cmd (workerFn context p) 
    (funcall workerFn context p)) 

(defun main() 
    (let ((context())) 
    (do-cmd #'worker-1 context "A") 
    (do-cmd #'worker-2 context "A"))) 

do-cmd-समारोह की उम्मीद कार्यकर्ता कार्यों कि एक विशिष्ट इंटरफ़ेस च (संदर्भ पी) को लागू: यहाँ एक उदाहरण है।

in: DEFUN WORKER-2 
;  (DEFUN WORKER-2 (CONTEXT P) (PRINT P)) 
; 
; caught STYLE-WARNING: 
; The variable CONTEXT is defined but never used. 
; 
; compilation unit finished 
; caught 1 STYLE-WARNING condition 

उत्तर

11

आप घोषित करने के लिए है कि पैरामीटर जानबूझकर ignored है की जरूरत है:

SBCL संकलक निम्न चेतावनी फेंकता है।

(defun worker-2 (context p) 
    (declare (ignore context)) 
    (print p)) 

(ignore भी एक चेतावनी संकेत होगा यदि आप चर का उपयोग करना । दोनों ही मामलों में चेतावनी को दबाने के लिए, आपको घोषणा ignorable उपयोग कर सकते हैं, लेकिन यह केवल मैक्रो और ऐसे मामलों में इस्तेमाल किया जाना चाहिए, जहां यह है यह निर्धारित करने के लिए संभव यह निर्धारित करने के लिए कि चर का उपयोग इसकी घोषणा के बिंदु पर किया जाएगा।)

+0

हां। आपका बहुत बहुत धन्यवाद। आपने मेरी बहुत मदद की। – Ollimaus

संबंधित मुद्दे

 संबंधित मुद्दे