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-expr
s:
(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.