static変数は自動変数と異なり,関数が起動される毎に初期化されることなく, ずっと存在し続ける。これは,static変数が関数内で私的な永久記憶をもつを ことを意味する。
static変数は0に初期化されることが保証されるので,ユーザが陽に初期化
する必要はない。リストは成分が0個のリストとして初期化される。
Func void afo() { static Integer i; // 0 に初期化される static Real r; // 0.0 に初期化される static Complex c; // (0,0) に初期化される static Polynomial P; // 0 に初期化される static Rational R; // 0 に初期化される static List l; // {} に初期化される i = i + 1; r = r + 1; c = c + (1,0); P = P + 1; R = R + 1; appendlist(l, 1); }
Func void afo() { static Matrix A; if (length(A) == 0) { A = [1]; } else { A = A + [1]; } }