我有一个具有以下结构的函数(我可以发布整个定义,如果它很重要,但我认为它会分散注意力,所以现在我跳过这个):
(defun my-func (...)
(save-excursion
(cl-block lp
(let (...)
(loop for ... in ... do
...
(return-from lp ...))))))
我也有
;; -*- lexical-binding: t -*-
过去工作正常,突然我开始从这个函数中得到以下错误:
return-from: No catch for tag: --cl-block-lp--, ("\\(" . "\\)")
这个错误显然是错误的,因为标签确实存在。此外,当试图单步执行该函数时,我发现如果我再次评估定义(在加载emacs之后),我不会收到此错误。
我的问题是:
P.S。
我不确定为什么我用cl-block / return-from而不是throw / catch编写它 - 可能是因为我正在使用循环结构。我将它更改为throw / catch,现在可以正常工作。