(init params ..body) params: an arr body: zero or more forms
Defines an initializer method.
To construct an object, invoke its class as though calling a function:
(Class a b).
- Allocate a new object which belongs to that class, with all of its fields set to
#nand all of its states disabled.
- Invoke the
initmethod, passing in
bas its arguments.
- Automatically enable any toplevel
- Return the object.
init clause will automatically prepend field initializers to the beginning of its
- When a
fieldclause has an explicit initializer form, that form is evaluated directly and assigned to those field(s).
- When one of the
initmethod's parameters is prefixed with
@, the value of that parameter is assigned to the corresponding field, which must not have an explicit initializer form.
Fields are always initialized in the same order that they were declared. This means that field-initializer forms can access fields defined earlier in the same class.
(defclass Example (field a) (field b (* @a 10)) (init (@a) (prn b))) ; ...is equivalent to... (defclass Example (field a #n) (field b #n) (init (a) (= @a a) (= @b (* @a 10)) (prn b)))