Ich bin eine Klasse für einige Arbeit an molekularen Dynamik bilden, wie folgt:Wann wird ein Initform verwendet?
(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))))
Anfangs dachte ich, dass ich irgendwie zu anderen Slots innerhalb der Klassendefinition mit einem Initform dh (getmass Name) beziehen könnte - aber das erweist sich als unwahr (oder tut es?!?). Stattdessen wurde mir gesagt, dass Initialize-Instanz der Platz wäre, um all diese Initialisierungs-Sachen zu platzieren ... fair genug.
Die Frage, die ich habe, ist dann wann ist: initform verwendet? Was ist die idiomatische Präferenz? Ich habe gesehen, wie es oben für die Erzeugung von (Fehler "...") Code verwendet wurde, und auch um Standardargumente zu initialisieren, wenn ein: initarg nicht zur Verfügung gestellt wird. Aber beide könnten leicht in die initialize-Instanz passen und könnten dort mehr Sinn ergeben. Gibt es einen bestimmten Weg: Initform wird in der Regel verwendet?