(defclass myclass ()
(iv1 iv2 iv3
(cv1 :allocation :class)))
(defclass myclass2 (standard-object) ; same as above
(iv1 iv2 iv3
(cv1 :allocation :class))
(:metaclass standard-class))
(setq i1 (make-instance 'myclass))
(class-of i1) -> class object of i1
(class-name (class-of i1))
(find-class 'myclass) -> class object
(type-of i1) -> MYCLASS
(describe i1)
(setf (slot-value i1 'iv2) 55)
(defmacro set-slot (i s v)
`(setf (slot-value ,i ',s) ,v))
(defmacro get-slot (i s)
`(slot-value ,i ',s))
(slot-value i1 'iv2)
(with-slots (iv1 iv2 iv3) i1
(setq iv2 'hello))
(defmethod do-nothing ((self myclass)) ; This will create a generic function too if it doesn't already exist
"in do-nothing")
(do-nothing i1)
(setq standard-object (find-class 'standard-object)) (setq standard-class (find-class 'standard-class)) (class-of standard-object) -> standard-class (class-of standard-class) -> standard-class (class-direct-superclasses standard-class) -> non-standard function call ; Need: ; (defclass2 class-name (super-class-list) (class-variables) (instance-variables)) ; ; Becomes: ; (defclass META-class-name (META-super-class-list) (class-variables) (:metaclass standard-class)) ; (defclass class-name (super-class-list) (instance-variables) (:metaclass META-class-name)) ; Problem because of missing meta-standard-object, meta-standard-class, etc. (defclass meta-class1 (standard-class) (cv1 cv2 cv3) (:metaclass standard-class)) (defvar sc (find-class 'standard-class)) (defvar mc1 (find-class 'meta-class1)) (defclass class1 (standard-object) (iv1 iv2 iv3) (:metaclass meta-class1)) (defclass meta-class2 (meta-class1) (cv4 cv5 cv6) (:metaclass standard-class)) (defclass class2 (class1) (iv4 iv5 iv6) (:metaclass meta-class2)) (setq i1 (make-instance 'class1)) (setq i2 (make-instance 'class2)) ; instance initialization method (defmethod allocate-instance :after ((class meta-class1) &key) ...)
Add new attachment
Only authorized users are allowed to upload new attachments.
«
This page (revision-1) was last changed on 02-May-2011 21:13 by UnknownAuthor
JSPWiki v2.10.4