defclass en Lisp
Una clase de CLOS deletrea a mano el :initarg, el :accessor y el :initform de cada ranura.
;; Shape classes with initargs, accessors, and initform defaults.
(defclass shape ()
((name :initarg :name :accessor shape-name :initform "shape")
(sides :initarg :sides :accessor shape-sides :initform 0)))
(defclass rectangle (shape)
((width :initarg :width :accessor rectangle-width :initform 1)
(height :initarg :height :accessor rectangle-height :initform 1)))
(defvar *card* (make-instance 'rectangle :name "index card"
:sides 4 :width 5 :height 3))
(setf (rectangle-height *card*) 4)
(format t "~a has ~d sides and area ~d~%"
(shape-name *card*) (shape-sides *card*)
(* (rectangle-width *card*) (rectangle-height *card*)))
Cómo funciona
shapenombra dos ranuras;rectanglelas hereda y agregawidthyheight.make-instancepasa:name,:sides,:widthy:heightcomo initargs.- Los accesores leen y escriben:
(setf (rectangle-height *card*) 4)actualiza la ranura en el lugar.
Palabras clave y builtins usados aquí
defclassdefvarformatsetf
El intento, en números
- Líneas
- 18
- Caracteres a escribir
- 633
- Tokens
- 102
- Ritmo de tres estrellas
- 70 tpm
Al ritmo de tres estrellas de 70 tokens por minuto, este intento toma unos 87 segundos.
Paso 2 de 3 en Estructuras y CLOS; paso 20 de 27 en Fundamentos del lenguaje.