2013-02-11 107 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

相关问题