【发布时间】:2013-11-11 18:30:09
【问题描述】:
是否可以像函数一样定义结构的插槽之一并访问该插槽以使用该函数?如果是,如何使用它?例如,像这样:
(defstruct problem
state
(player (defun getplayer (some-state) (findplayer 1 some-state)))
(points (defun getpoints (some-state someplayer) (findpoints someplayer some-state)))
)
【问题讨论】:
-
不,你不能这样做。我想你可能想看看 CLOS,你可以在其中定义访问槽的方法。
-
你写的内容的预期语义是什么?
getplayer和getpoints的参数应该是什么? -
这可能取决于您到底想要达到什么目标。您可以将实际函数放入插槽的
initform中(这将导致每次实例化结构时都会创建它。您可以在结构上专门化该函数。您也可以使用类,在这种情况下您也可以创建funcallable 类,因此将所有 OO 机制应用于函数本身。
标签: lisp common-lisp