Je suis la formation d'une classe pour un travail sur la dynamique moléculaire comme suit:Quand un initform est-il utilisé?
(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))))
Au début, je pensais que je pouvais faire référence à d'autres emplacements dans la définition de la classe avec un initForm ie (nom getmass) - mais se révèle être faux (ou le fait?!?). Au lieu de cela, on me dit que initialize-instance serait l'endroit pour mettre toutes ces choses d'initialisation ... assez juste.
La question que j'ai, alors, est quand est: initform utilisé? Quelle est la préférence idiomatique? Je l'ai vu utilisé comme ci-dessus pour générer du code (error "..."), et aussi pour initialiser les arguments par défaut quand un: initarg n'est pas fourni. Mais les deux peuvent facilement s'intégrer dans initialize-instance et peuvent avoir plus de sens là-bas. Existe-t-il un moyen particulier: initform est généralement utilisé?