elisp 怎么同时遍历 list 的索引和值

第一个问题:同时遍历 list 的索引和值可以使用 cl-loop (参见 (info “(cl) Loop Facility”)

(cl-loop for i from 0
         for x in '(a b c)
         collect (cons i x))

后面几个问题:一般来说,写 Emacs Lisp 会倾向于函数式风格,用到 break continue return 的几率大大小于在 C, JS 等语言。(注意 cl-loop 本身可以求出一个值,与 for 语句不同。)

如果用到了,可以使用 cl-loop 的 return (退出循环而非函数), if/when 等语句,见 (info “(cl) Other Clauses”)

break 和 return 也可以用 non-local exitcatchthrow

continue 似乎没有比较直接的对应,不过这个问题也不是很大。重申一遍,用函数式风格写代码,对这种控制流的要求会低很多。