如何在Emacs Lisp中遍历嵌套列表?代码报错求助
解决Emacs Lisp遍历嵌套列表的报错问题
报错信息翻译
"symbol's value is void k." → 符号k的值未定义
问题原因
你混用了循环语法,Emacs Lisp中没有原生的loop命令,外层的loop未被定义,导致变量k没有被正确绑定,内层cl-loop无法找到k的有效值,因此报错。
正确实现方式
以下两种方法都可以正确遍历你的嵌套列表:
方法1:统一使用cl-loop
(setq my-list '(((a . 1) (b . 2)) ((c . 3)))) (cl-loop for k in my-list do (cl-loop for (i . j) in k do (message "%c %d" i j)))
方法2:使用Emacs原生dolist嵌套
(setq my-list '(((a . 1) (b . 2)) ((c . 3)))) (dolist (k my-list) (dolist (pair k) (message "%c %d" (car pair) (cdr pair))))
两种方式都会先遍历外层的每个子列表,再遍历子列表中的每个cons对,最终打印出每个键值对的内容。
内容的提问来源于stack exchange,提问作者Zeta
相关产品推荐
相关产品推荐

