2010-10-25 51 views
4

I.e.將狀態從一個對象轉移到另一個對象,該對象共享一些(但不是全部)第一個對象的成員。LISP開發人員如何解決AutoMapper在.NET中解決的問題?

我並沒有將這個問題應用於任何現實生活中的問題,但我想我要求它瞭解LISP中的問題解決方法與面向對象的語言C#。

+0

在傳輸後不再需要原始對象的情況下,您可以簡單地調用'change-class'來就地更改其類。 – Ken 2010-10-25 15:13:40

回答

1

就像一個對象是一個類的實例,一個類也是一個對象,它是(元)類「class」的一個實例。你可以詢問你的每個類的時隙定義列表,並比較兩個列表來找到共同點。 http://www.lisp.org/mop/concepts.html

+0

感謝您的鏈接。非常全面。 – Jonathan 2010-10-25 23:54:25

1

這很簡單。

您只需編寫一個小函數,查看對象的類在哪些插槽中具有共同特性(藉助元對象協議)並複製其值。最多10行。

+0

看着MOP,它看起來像COMPUTE-SLOTS是需要的例程,但我不確定如何使用它 - 我應用於DEFCLASS類並在CLISP中實例化它,並導致錯誤。 : -/ – 2010-10-25 21:33:58

+0

不確定你是否仍然在尋找答案,但是這裏是如何在CLISP中使用COMPUTE-SLOTS:http://paste.lisp.org/display/116008但是你可能想使用CLASS-SLOTS 。然後使用SLOT-DEFINITION-NAME獲取插槽的名稱。 – skypher 2010-10-29 09:53:09