问题描述
我正在学习 ELISP,这个函数应该收集任意数量的参数加上 N 并返回总和。这是我到目前为止所得到的,我无法弄清楚我的错误在哪里,谢谢。此外,如果一个字符在列表中,它应该跳过而不是将它添加到值中。我正在使用 ELISP
(defun sum-numbers (n &rest L)
(let (a 0)
(if (not L) n
(dolist (x L result)
(if (integerp x)
(setq a (+ x a)))))
(setq a (+ a n))))
解决方法
您错误地使用了 let
。
也可能存在其他错误,但由于缩进损坏,您的代码不可读。在每一行点击 TAB
以获得正确的缩进。
更正:
(defun sum-numbers (n &rest L)
- (let (a 0)
+ (let ((a 0))
(if (not L)
n
- (dolist (x L result)
+ (dolist (x L (+ a n))
(if (integerp x)
- (setq a (+ x a)))))
- (setq a (+ a n))))
+ (setq a (+ x a)))))))
(在学习之外,您只需使用 +
,它已经对任意数量的参数求和。)