2013-02-11 88 views
1

當試圖以交互方式運行我的主函數時,出現「格式說明符與參數類型不匹配」錯誤。我的代碼是:Elisp格式說明符與參數類型錯誤不匹配

(defun average(grade) 
    (setq divide (/ grade 10)) 
    (cond ((= divide 10) "A") 
     ((= divide 9) "A") 
     ((= divide 8) "B") 
     ((= divide 7) "C") 
     ((= divide 6) "D") 
     ("F"))) 

(defun main(g) 
(interactive "nGrade: ") 
(message "%d" (average g))) 

任何人都可以幫助我輸入/輸出錯誤嗎? 謝謝

+1

與問題無關,但Emacs Lisp沒有函數範圍。你的代碼在全局**綁定'divide' **。在'average'的主體中使用let綁定來「劃分」。 – lunaryorn 2013-02-11 19:03:42

回答

4

的錯誤是在格式線

(format "%d" (average g)) 

想格式化一個整數,但你返回一個字符串,它應該是:

(format "%s" (average g)) 

順便說一句,M-x ielm測試elisp時非常有用。

+0

這工作..非常感謝你! – ola 2013-02-11 18:52:53