Type Conversion and Assignment
Assignment Model
The way iXML assigns values depends on the type:
- Primitive variables (null, bool, int, float, string) are assigned by value. Copies are created.
- Complex variables (array, function, macro, class) are assigned by reference. Both variables point to the same data.
Type Conversion Table
The following table shows how values behave across type inspection, comparison, and casting.
| Value | TYPEOF | IF='' | IF!='' | IF='0' | CAST(bool) | CAST(int) | CAST(float) | CAST(string) |
|---|---|---|---|---|---|---|---|---|
<undefined> | 'undefined' | true | false | false | false | 0 | 0 | '' |
NULL | 'null' | true | false | false | false | 0 | 0 | '' |
TRUE | 'bool' | false | true | false | true | 1 | 1 | '1' |
FALSE | 'bool' | true | false | false | false | 0 | 0 | '' |
0 | 'int' | false | true | true | false | 0 | 0 | '0' |
123 | 'int' | false | true | false | true | 123 | 123 | '123' |
0.0 | 'float' | false | true | true | false | 0 | 0 | '0' |
'0' | 'string' | false | true | true | false | 0 | 0 | '0' |
'abc' | 'string' | false | true | false | true | 0 | 0 | 'abc' |
'' | 'string' | true | false | false | false | 0 | 0 | '' |
<array> | 'array' | false | true | false | true | 0 | 0 | '[array#N]' |
warning
Numeric Comparison Trap: <if value1="0" func="=" value2="0.0"> is true because numeric comparison is performed when both sides look numeric.