common-lisp - 基于 Common Lisp 对象系统类定义中的其他槽值初始化槽

标签 common-lisp clos slot

在我的类定义中,我想根据另一个插槽的值初始化一个插槽。这是我想做的事情:

(defclass my-class ()
  ((slot-1 :accessor my-class-slot-1 :initarg slot-1)
   (slot-2 :accessor my-class-slot-2 :initform (list slot-1))))

但是,这不会编译:
1 compiler notes:

Unknown location:
  warning: 
    This variable is undefined:
      SLOT-1

  warning: 
    undefined variable: SLOT-1
    ==>
      (CONS UC-2::SLOT-1 NIL)


Compilation failed.

有没有办法做到这一点?

最佳答案

使用 initialize-instance :after记录在案 here

关于common-lisp - 基于 Common Lisp 对象系统类定义中的其他槽值初始化槽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3620249/

相关文章:

emacs - 如何在 LispBox 中调试 LISP 编译器错误?

lisp - Lisp 文档模板中的星号是什么意思?

lisp - Lisp 中 vector 和 list 之间的关系是什么?

lisp - "Overloading"具有不同参数列表的 CLOS 多方法

vue.js - 如何处理 Vue3 和 Storybook 7 中的插槽

if-statement - clisp 在中缀、后缀、前缀之间转换(我正在尝试 if 语句)

lisp - 比较 Common Lisp 和 Gambit w.r.t 他们的库访问和对象系统

common-lisp - 从泛型函数中删除一个方法

Qt - 清除旧信号

c++ - 不能在信号/槽/连接例程中传递参数