| [ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
6.7 Variable initializers
A variable can be assigned a value when it is declared, as in
int x=3; where the variable x is assigned the value 3.
As well as literal constants such as 3, arbitary expressions can be used
as initializers, as in real x=2*sin(pi/2);.
A variable is not added to the namespace until after the initializer is evaluated, so for example, in
int x=2; int x=5*x;
the x in the initializer on the second line refers to the variable
x declared on the first line. The second line, then, declares a variable
x shadowing the original x and initializes it to the value
10.
Variables of most types can be declared without an explicit initializer and they will be initialized by the default initializer of that type:
- Variables of the numeric types
int,real, andpairare all initialized to zero; variables of typetripleare initialized toO=(0,0,0). -
booleanvariables are initialized tofalse. -
stringvariables are initialized to the empty string. -
transformvariables are initialized to the identity transformation. -
pathandguidevariables are initialized tonullpath. -
penvariables are initialized to the default pen. -
frameandpicturevariables are initialized to empty frames and pictures, respectively. -
filevariables are initialized tonull.
The default initializers for user-defined array, structure, and function types
are explained in their respective sections. Some types, such as
code, do not have default initializers. When a variable of such
a type is introduced, the user must initialize it by explicitly giving
it a value.
The default initializer for any type T can be redeclared by defining the
function T operator init(). For instance, int variables are
usually initialized to zero, but in
int operator init() {
return 3;
}
int y;
the variable y is initialized to 3. This example was given for
illustrative purposes; redeclaring the initializers of built-in types is not
recommended. Typically, operator init is used to define sensible
defaults for user-defined types.
The special type var may be used to infer the type of a variable from
its initializer. If the initializer is an expression of a unique type, then
the variable will be defined with that type. For instance,
var x=5; var y=4.3; var reddash=red+dashed;
is equivalent to
int x=5; real y=4.3; pen reddash=red+dashed;
var may also be used with the extended for loop syntax.
int[] a = {1,2,3};
for (var x : a)
write(x);
| [ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated on May 24, 2014 using texi2html 5.0.
