当使用Common Lisp进行开发时,我们有三种可能性来定义新的setf-forms:
对此问题的回复可能会提及最通用的解决方案,并概述其他解决方案优越的情况。
- 我们可以定义一个函数,其名称是两个符号的列表,第一个符号为setf,例如defun (setf some-observable) (…)。
- 我们可以使用defsetf的简短形式。
- 我们可以使用defsetf的长形式。
- 我们可以使用define-setf-expander。
对此问题的回复可能会提及最通用的解决方案,并概述其他解决方案优越的情况。
values
),并避免重复计算相同的内容,例如如果您在哈希表中使用incf
对某些内容进行增量操作,则不需要两次哈希/查找键。 - Dan Robertson