The class100, class100*, and
class100*/names forms provide a syntax close to that of
class, class*, and class*/names in
MzScheme versions 100 through 103, but with the semantics of the
current class.ss system (see Chapter 4). For a
class defined with class100, keyword-based initialization
arguments can be propagated to the superclass, but by-position
arguments are not (i.e., the expansion of class100 to
class always includes an init-rest clause).
The class100*/names form creates a new class:
(class100*/names local-names superclass-expr (interface-expr ···) initialization-variables class100-clause ···) local-names is one of (this-variable super-make-object-variable) (this-variable super-make-object-variable super-instantiate-variable) initialization-variables is one of variable (variable ··· variable-with-default ···) (variable ··· variable-with-default ··· . variable) variable-with-default is (variable default-value-expr) class100-clause is one of (sequence expr ···) (public public-method-declaration ···) (override public-method-declaration ···) (private private-method-declaration ···) (private-field private-var-declaration ···) (inherit inherit-method-declaration ···) (rename rename-method-declaration ···) public-method-declaration is one of ((internal-variable external-variable) method-procedure) (variable method-procedure) private-method-declaration is one of (variable method-procedure) private-var-declaration is one of (variable initial-value-expr) (variable) variable inherit-method-declaration is one of variable (internal-instance-variable external-inherited-variable) rename-method-declaration is (internal-variable external-variable)
In local-names, if super-instantiate-variable is not
provided, the instantiate-like superclass initialization form
will not be available in the class100*/names body.
The class100* macro avoids specifying local-names,
instead implicitly binding this and super-init (and
nothing for super-instantiate-variable).
(class100* superclass-expr (interface-expr ···) initialization-variables class100-clause ···)
The class100 macro omits both local-names and the
interface-exprs:
(class100 superclass-expr initialization-variables class100-clause ···)
( SYNTAX
class100-asi superclass instance-variable-clause ···)
Like class100, but all initialization arguments are
automatically passed on to the superclass initialization procedure by
position.
( SYNTAX
class100*-asi superclass interfaces instance-variable-clause ···)
Like class100*, but all initialization arguments are
automatically passed on to the superclass initialization procedure by
position.