定义函数的局部变量



我正在(愉快地(完成Emacs Lisp编程入门,并解决了第一个8.7搜索练习。 它指出,

编写一个搜索字符串的交互式函数。如果 搜索查找字符串,在其后留下点并显示消息 上面写着"找到了!

我的解决方案是

(defun test-search (string)
  "Searches for STRING in document.
Displays message 'Found!' or 'Not found...'"
  (interactive "sEnter search word: ")
  (save-excursion
    (beginning-of-buffer)
    (setq found (search-forward string nil t nil))) 
  (if found
      (progn
        (goto-char found)
        (message "Found!"))
    (message "Not found...")))

如何使found成为函数的本地? 我知道 let 语句定义了一个局部变量。 但是,我只想在找到string时才移动点。 我不清楚如何在本地定义found,但如果未找到string,则不要将点设置为beginning-of-buffer。 在这种情况下,let正确的命令吗?

正如一些评论中所述,let 是您要在此处使用的,尽管它不会定义函数的局部变量,而是定义自己的范围。

您的代码变为:

(defun test-search (string)
   "Searches for STRING in document.
Displays message 'Found!' or 'Not found...'"
   (interactive "sEnter search word: ")
   (let ((found (save-excursion
                  (goto-char (point-min))
                  (search-forward string nil t nil))))
     (if found
       (progn
         (goto-char found)
         (message "Found!"))
       (message "Not found..."))))

编辑:由于菲尔斯的评论,代码被修改了。

相关内容

  • 没有找到相关文章

最新更新