我正在为分子动力学方面的一些工作组建一个班级,如下所示:
(defclass %atom (particle)
((name :initarg :name :initform (error "Every atom in the system must have a name!"))
(mass :accessor mass :initarg :mass :initform (getmass name))
(charge :accessor charge :initarg :charge :initform (getcharge name))))
最初,我认为我可以以某种方式使用 initform 即(getmass 名称)来引用类定义中的其他插槽 - 但事实证明这是不正确的(或者是这样吗?!?)。相反,我被告知 initialize-instance 将是放置所有初始化内容的地方......足够公平。
那么,我的问题是什么时候使用 :initform ?惯用的偏好是什么?我已经看到它如上所述用于生成(错误“...”)代码,并且还用于在未提供 :initarg 时初始化默认参数。但是这两个都可以很容易地适应初始化实例,并且在那里可能更有意义。有没有特别的方法 :initform 通常被使用?