gpt4 book ai didi

Lisp:如何在 initialize-instance :around 方法中获取创建的实例

转载 作者:太空宇宙 更新时间:2023-11-03 18:44:29 24 4
gpt4 key购买 nike

我想为类 X 创建一个初始化实例的(:around 合格的)专门化程序,它将首先调用下一个方法,然后调用另一个类的生成实例,为它提供创建的 X 实例。我怎样才能在 initialize-instance :around 方法中获取创建的实例? (当然,假设在调用了 call-next-method 之后,我们处于 :around 的结束端)

编辑:A 类与 B 类具有双向关系,通过每个槽中的一个插槽保留另一个的 id,但 A 类需要 B 类的 id,而相反则不需要。所以我想要的流程是:

  1. 制作实例'classA
  2. inside initialize-instance :around classA 我会:

    我。生成实例 classB 并获取 id-of-B。

    ii call-next-method 添加 id-of-B

    iii 设置classB对应的id-of-A slot指向我们创建的classA实例(这是我的原题原因)

现在我可以在 :before 中做 [i],在 :after 中做 [iii],但我不能:A 类和 B 类是大象的持久类,我想将整个流程包装在一个事务中,我不想跨越许多方法。对于那些熟悉 elephant 的人,我想使用 ensure-transaction 包装器,我不想在不同的点使用显式的 begin 和 commit 函数调用。

最佳答案

实例作为 initialize-instance 的第一个参数传递。

(defmethod initialize-instance :around ((created myclass) ...)
;; do something with created
created)

关于Lisp:如何在 initialize-instance :around 方法中获取创建的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5817100/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com