0

我正在为一门大学课程学习 eLISP,但我在一个项目上遇到了一些麻烦。我正在尝试编写一个采用列表和大小的方法,然后用用户输入填充该列表。我无法让 eLISP 实际请求输入——出于某种原因,交互式调用无法正常工作。请注意,我使用的是“Array”而不是“List”,因为这就是我编写其他 3 个脚本的方式,现在我太困惑了,无法更改它。

这是我的代码:

(defun readArray(anArray size)
  (if (>= size 0)
      (progn
        (setq value 0)
        (princ "Enter values maybe?\n") ;;note this line is executed,so I think the prog is working
        (interactive "\nnEnter a value: ")
        (setq anArray (list value (readArray (- size 1)))))))

运行 (readArray 4) 给了我以下输出:

Enter values maybe?
Enter values maybe?
Enter values maybe?
Enter values maybe?
Enter values maybe?
(0 (0 (0 (0 ...))))
4

1 回答 1

1

试试这个:

(defun read-list (size)
  (if (> size 0)
      (let ((value (read-from-minibuffer "Enter value maybe? " nil nil t)))
        (cons value (read-list (- size 1))))))

read-from-minibuffer打印提示并读取用户的响应。

于 2013-03-14T00:45:23.217 回答