Estoy formando una clase para un cierto trabajo sobre la dinámica molecular como sigue:¿Cuándo se usa una forma de inicio?
(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))))
principio pensé que de alguna manera que podría referirse a otras ranuras dentro de la definición de clase con un initForm es decir (nombre getmass) - pero que resulta ser falso (¿o no?). En cambio, me dijeron que inicializar-instancia sería el lugar para poner todo ese material de inicialización ... bastante justo.
La pregunta que tengo, entonces, es ¿cuándo se usa initform? ¿Cuál es la preferencia idiomática? Lo he visto usado como arriba para generar código (error "...") y también para inicializar argumentos predeterminados cuando no se proporciona un: initarg. Pero ambos podrían encajar fácilmente en la instancia inicial y pueden tener más sentido allí. ¿Hay alguna manera en particular: generalmente se usa initform?