Functions -
lang.typedesc
constructFrom |
Constructs a value with a specified type by copying another value. |
Constructs a value with a specified type by copying another value.
Parameters
- t typedesc
-
the type for the copy to be constructed
- v anydata
-
the value to be copied
-
Return Type
(null | error) a new value that belongs to the type of
t
, or an error if this cannot be doneWhen
v
is a structural value, the inherent type of the value to be constructed comes fromt
. Whent
is a union, it must be possible to determine which member of the union to use for the inherent type by following the same rules that are used by list constructor expressions and mapping constructor expressions with the contextually expected type. If not, then an error is returned. TheconstructFrom
operation is recursively applied to each member ofv
using the type descriptor that the inherent type requires for that member.Like the Clone abstract operation, this does a deep copy, but differs in the following respects:
- the inherent type of any structural values constructed comes from the specified type descriptor rather than the value being constructed
- the graph structure of
v
is not preserved; the result will always be a tree; an error will be returned ifv
has cycles - immutable structural values are copied rather being returned as is; all structural values in the result will be mutable, except for error values (which are always immutable)
- numeric values can be converted using the NumericConvert abstract operation
- if a record type descriptor specifies default values, these will be used to supply any missing members