我正在寻找一种从关联列表中"弹出"元素的方法,换句话说就是"破坏性"的关联:
(setq alist '((a . 1) (b . 2))
(assoc-pop 'a alist) ;; -> (a . 1)
;; alist -> ((b . 2))
Run Code Online (Sandbox Code Playgroud)
在elisp线束中有任何功能吗?获得symilar功能最优雅的方法是什么?(不确定这种"副作用"是一种很好的做法,即使有可能!)
据我所知,没有这样的内置运算符,但我认为您可以很快获得此功能:
(defmacro assoc-pop (key alist)
`(let ((result (assoc ,key ,alist)))
(setq ,alist (delete result ,alist))
result))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
460 次 |
最近记录: |