Emacs Elisp格式说明符不';不匹配参数类型错误

Emacs Elisp格式说明符不';不匹配参数类型错误,emacs,arguments,elisp,conditional,Emacs,Arguments,Elisp,Conditional,当我尝试以交互方式运行主函数时,出现“格式说明符与参数类型不匹配”错误。我的代码是: (defun average(grade) (setq divide (/ grade 10)) (cond ((= divide 10) "A") ((= divide 9) "A") ((= divide 8) "B") ((= divide 7) "C") ((= divide 6) "D") ("F"))) (de

当我尝试以交互方式运行主函数时,出现“格式说明符与参数类型不匹配”错误。我的代码是:

(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 )))
有人能帮我解决我输入/输出的错误吗?
谢谢

错误在格式行中

 (format "%d" (average g))
要格式化整数,但返回的字符串应为:

 (format "%s" (average g))

另外,
M-x ielm
在测试elisp时很有用。

错误在格式行中

 (format "%d" (average g))
要格式化整数,但返回的字符串应为:

 (format "%s" (average g))

另外,
M-x ielm
在测试elisp时很有用。

与问题无关,但Emacs Lisp没有函数范围。您的代码全局绑定
divide
。在
average
的正文中为
divide
使用let绑定。与问题无关,但Emacs Lisp没有函数作用域。您的代码全局绑定
divide
。在
average
的主体中,对
divide
使用let绑定。