Next: Method Invocation, Previous: Accessing Slots, Up: EIEIO [Contents][Index]
Writing a method in EIEIO is similar to writing a function. The differences are that there are some extra options and there can be multiple definitions under the same function symbol.
You do it using Emacs Lisp’s built-in support for CLOS-style generic
functions via the cl-defgeneric
and cl-defmethod
macros
(see Generic Functions in GNU Emacs Lisp Reference Manual).
EIEIO provides one extension to cl-defmethod
to allow methods to
dispatch on a class argument: so-called “static” methods do not depend
on an object instance, but instead operate on a class. You can create
a static method by using the subclass
specializer with
cl-defmethod
:
(cl-defmethod make-instance ((class (subclass mychild)) &rest args) (let ((new (cl-call-next-method))) (push new all-my-children) new))
The argument of a static method will be a class rather than an object.
Use the functions oref-default
or oset-default
which
will work on a class.
A class’s make-instance
method is defined as a static
method.
Note: The subclass
specializer is unique to EIEIO.