lisp - clisp,CLOS : retyping an object, 之后

标签 lisp common-lisp clos

假设我有一个类 animal,它有子类 horseduckrabbit。假设我使用 make-instance 来制作多个 animal 类的对象。很久以后,我发现,对于这些对象中的每一个,它实际上是一匹,或一只鸭子,或一只兔子。有没有办法重新输入这些对象?简单地创建适当子类型的新对象并复制所有槽中的数据,将是笨拙的,因为此时这样一个对象已经在列表中表示,这些列表位于其他对象的槽中,我必须去通过这些列表并将旧对象替换为新对象。

保留相同的旧对象并对它们进行子分类。我可以这样做吗?

最佳答案

CHANGE-CLASS ,一个标准的 Common Lisp 函数。

关于lisp - clisp,CLOS : retyping an object, 之后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9666701/

相关文章:

java - 在Clojure中使用并发之前是否应该全面了解Java并发和线程模型等?

mongodb - 在 cl-mongo 中实现 MongoDB SASL 身份验证

common-lisp - 如何在 common-lisp 中使用 slime 浏览类层次结构

common-lisp - 为什么在 `make-instance` 中调用 `let` 的工作方式不同?

common-lisp - 在 Common Lisp 中定义多个后端的惯用方式?

Lisp:2 和 (2) 之间的区别

lisp - 如何存储lispbuilder-sdl :colors in a list?

macros - 编写宏时获取原始符号名称

lisp - Clozure Common Lisp - file-exists-p 未定义

lisp - 为什么在 LISP 中不需要#'(尖引号)符号?