Variant
The standard library contains the type core.Variant that represents an object of any
type in the system. Due to the need to accommodate any type, it has to allocate values on the heap
rather than internally. This means that using a Variant incurs a performance penalty over
situations where the types are known statically.
The Variant has no facility to extract the current value in a safe manner. It is necessary to use
weak casts to extract the contained
type.
The Variant contains constructors that automatically cast any types into a Variant
implicitly. This allows functions that accept Variants to be used conveniently.
Apart from the constructors, the Variant has the following members:
-
init()Create an empty variant.
-
core.Bool empty()Is the variant empty?
-
core.Bool any()Does the variant contain any element?
-
core.Bool has(core.lang.Type type)Does this variant contain the type
type? -
core.Maybe<core.lang.Type> type()Get the type of the value in the variant. Returns
nullif it is empty.
It is also possible to print variants using << or toS as usual.
