The type of the null value. Any union type of form
Null|T is considered an optional type, whose values
include null. Any type of this form may be written as
T? for convenience.
The if (exists ... ) construct, or, alternatively,
assert (exists ...), may be used to narrow an optional
type to a definite type, that is, a subtype of
Object:
String? firstArg = process.arguments.first;
if (exists firstArg) {
print("hello " + firstArg);
}
The else operator evaluates its second operand if and
only if its first operand is null:
String name = process.arguments.first else "world";
The then operator evaluates its second operand when
its first operand evaluates to true, and produces null
otherwise:
Float? diff = x>=y then x-y;
The ?. operator may be used to evaluate an attribute
or invoke a method of an optional type, evaluating to
null when the receiver is missing:
value [firstName, lastName] =
let (fullName = process.arguments.first?.trimmed,
bits = fullName?.split()?.sequence() else [])
[bits[0], bits[1]];
assert (exists firstName, exists lastName);
No equivalence relation is defined for Null. In
particular, neither null==null nor null===null are
considered meaningful. Therefore, Null is neither
Identifiable, nor does it define
value equality.
null| Initializer |
Null() |