我需要这个函数来总结无限参数的数量

问题描述

我正在学习 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)))))))

(在学习之外,您只需使用 +,它已经对任意数量的参数求和。)