The make function handles much of the drudgery of object construction. It processes keywords and initializes slots. Programmers may, however, customize this process by adding methods to the generic function initialize. For example, if vehicle serial numbers must be at least seven digits:
define method initialize(v :: <vehicle>, #all-keys) // accepts all keywords next-method( ); if (v.serial-number < 1000000) error("Bad serial number!"); end if; end method;
Initialize methods get called after regular slot initialization. They typically perform error checking or calculate values for unusual slots. Initialize methods must accept all keywords using #all-keys.
It's possible to access the values of slot keywords from initialize methods, and even to specify additional keywords in the class declaration. See the Dylan Reference Manual for further details.