2

我想创建一个 ELISP 函数,它会提示用户输入一个数字 n,然后不断提示用户 n 次输入字符串。理想情况下,我希望将所有这些字符串放入一个列表中。这是我到目前为止所拥有的。显然,我所拥有的不起作用,但它可能有助于澄清我想做的事情的类型。

(defun prompt-user-n-times (n)
  "Prompt user n time for strings and append strings to list"
  (interactive "nHow many strings: ")

  (while (> n 0)
    (append newlist (interactive "sGive me input: "))
    (setq n (- n 1))
))

谢谢。

4

1 回答 1

4

只需为您的新列表定义一个绑定:

(defun prompt-user-n-times (n)
  "Prompt user n time for strings and append strings to list"
  (interactive "nHow many strings: ")

  (let ((newlist ()))
    (while (> n 0)
      (setq newlist (append newlist (list (read-string "Give me input: "))))
      (setq n (- n 1)))
    newlist))

几点说明:interactive 只是开头一个defun,在功能中,一个使用其他提示功能,比如简单的 read-stringappend要求两个列表,所以返回的字符串应该由函数read-string放入一个列表中list

于 2013-02-19T06:40:58.363 回答