我想要爲首先調用next方法的類X創建一個initialize-instance初始化實例的(:around限定的)專用器,然後將調用另一個類的make-instance,爲它提供創建的X實例。我如何獲得initialize-instance:around方法內創建的實例? (假設當然在呼叫接下來的方法之後,所以我們處於finilizing側:左右)Lisp:我怎樣才能得到初始化實例內創建的實例:around方法
編輯: A類與B類有一個雙向關係,通過每個槽中的一個槽保持另一個的ID,但A類需要B類的ID,而相反不是必需的。所以我想的流動是:
- 化妝實例「CLASSA
內初始化實例:約CLASSA我會:
我。 make-instance classB和aquire id-of-B。
II呼叫下一方法添加B ID-的-
III設置相應的ID-的-A CLASSB指向我們創建CLASSA實例的時隙(這是我原來的問題的原因)
現在我可以[i]在:之前和[iii]在:之後,但我不能: 類A和B是通過大象的持久化類,我想將整個流程包裝在一個我不想要的事務中跨越很多方法。對於那些熟悉大象的人,我想使用確保事務包裝器,我不想在不同的點使用顯式的開始和提交函數調用。
等一下,怎麼可能?除非您的示例中的「已創建」符號始終與在方法範圍內發生更改的內容綁定。那麼在call-next-method被調用之前它真的必須要做什麼? – Paralife 2011-04-28 12:59:00
@Paralife'created'綁定到新創建的實例。在調用'call-next-method'之前,新創建的實例只會應用默認的初始化以及上游方法應用的初始化(如果有的話)。 – WReach 2011-04-28 13:39:53
你提到的默認初始化是在哪裏定義的?它是依賴於實現嗎?它是defclass的initforms嗎? (實際上這是唯一認爲對我有意義的想法) – Paralife 2011-04-28 21:34:01