Common lisp 关于「;setf";在;“defun”是什么;?
我不完全理解setf在defun中的用法:Common lisp 关于「;setf";在;“defun”是什么;?,common-lisp,Common Lisp,我不完全理解setf在defun中的用法: 我想它重新定义了函数#'cookies-out*,不是吗?如果是这样,那么cookies-out*将是一个多态函数。您的代码片段没有重新定义任何函数。它本质上是在“扩展”CommonLisp的赋值功能,这是该语言的一个很好的特性。如果有人试图(setf(cookies out*…)),那么后面的代码片段将用于执行该赋值 关于您的问题的评论员已经提到了这些“setf扩展器”,为了详细说明这一点,您可能会发现阅读CLHS中的以下项目很有用。请注意,您的示例
我想它重新定义了函数#'cookies-out*,不是吗?如果是这样,那么cookies-out*将是一个多态函数。您的代码片段没有重新定义任何函数。它本质上是在“扩展”CommonLisp的赋值功能,这是该语言的一个很好的特性。如果有人试图(setf(cookies out*…)),那么后面的代码片段将用于执行该赋值 关于您的问题的评论员已经提到了这些“setf扩展器”,为了详细说明这一点,您可能会发现阅读CLHS中的以下项目很有用。请注意,您的示例使用(defun(setf…)表单,因此前两个链接适用
- 德芬:
- 函数名术语表:
- DEFSETF:
- DEFINE-SETF-EXPANDER:
(defun cookies-out* (&optional (reply *reply*))
"Returns an alist of the outgoing cookies associated with the REPLY object REPLY."
(cookies-out reply))
(defun (setf cookies-out*) (new-value &optional (reply *reply*))
"Sets the alist of the outgoing cookies associated with the REPLY object REPLY."
(setf (cookies-out reply) new-value))