Par*_*ife 2 lisp common-lisp clos
我想为类X创建一个初始化实例的(:around qualified)特化器,它将首先调用next-method然后调用另一个类的make-instance,为它提供创建的X实例.我怎么能在initialize-instance:around方法中获取创建的实例?(假设当然在调用了call-next-method之后,所以我们处于以下方面:
编辑:A类与B类的双向关系通过每个中的一个插槽保持另一个的id,但A类要求B类的id,而不需要相反的.所以我想要的流程是:
在initialize-instance中:围绕classA我会:
一世.make-instance classB和aquire id-of-B.
ii call-next-method添加id-of-B
iii将classB指向的相应id-of-A槽设置为我们创建的classA实例(这是我原来的问题原因)
现在我可以在[i]之前和[iii] in:之后做,但是我不能:类A和B是通过大象的持久类,我想将整个流程包装在一个我不想跨越多种方法的事务中.对于熟悉elephant的人,我想使用ensure-transaction包装器,我不想在不同的点使用显式的begin和commit函数调用.
该实例作为第一个参数传递initialize-instance
.
(defmethod initialize-instance :around ((created myclass) ...)
;; do something with created
created)
Run Code Online (Sandbox Code Playgroud)