是否可以在不通过Emacs Lisp中的临时变量的情况下直接将多个返回值分配给变量?
例如,假设我有一个函数返回两个列表的列表:
(defun test-func ()
(setq a '(a b))
(setq b '(c d))
`(,a ,b))
如果我想将第一个返回值分配给list-a
,将第二个返回值分配给list-b
,我可以使用一个临时变量来做到这一点temp
,例如:
(let* ((temp (test-func)) (list-a (car temp)) (list-b (cadr temp)))
(message-box (prin1-to-string list-a))
(message-box (prin1-to-string list-b)))
是否可以更简单地执行此操作?(我习惯于Perl和Python,而您不必指定临时变量)
@wvxvw谢谢!是的,我忘了使用
—
哈康Hægland
let
功能里面。我不打算设置任何全局变量:)
cl-destructuring-bind
宏。另外,您是否真的打算setq
在内使用defun
?setq
创建一个“特殊”(全局可访问)变量,通常将其放置在函数外部(因为多次声明同一变量没有多大意义,而函数打算多次运行)。