У меня есть al oop, в котором я создаю локальную переменную во время каждой итерации. Затем я объявляю лямбду, которая когда-нибудь в будущем использует локальную переменную.
(dolist (entry (read-lines "~/.emacs-projects"))
(let ((project (car (json-read-from-string entry)))) ;; <---- I NEED THIS ONE
(widget-create 'link
:button-prefix ""
:button-suffix ""
:action (lambda (wid &rest ignore) (load-project project)) ;; HERE
(format "%s : %s\n" (car project) (cdr project)))))
В приведенном выше коде я создаю project
, а когда срабатывает :action
, я хочу использовать project
в качестве аргумента для другая функция. В настоящее время я получаю Symbol’s value as variable is void: project
, когда запускается лямбда, что заставляет меня думать, что внешняя область не сохраняется.
Как я могу продлить время жизни project
, чтобы я мог получить к нему доступ в лямбде?