3 変数
varで宣言された識別子は、変数となる。宣言と同時に型と値を指定できる。自明な場合は、型または値を省略できる。
変数の値は、代入演算子で変更できる。その場合の変数を左辺値と呼ぶ。また、スワップ演算子で両辺の値を交換できる。
var foo: int = 12;
var bar: int;
foo = 889464;
var a = "golden axe.";
var b = "silver axe.";
a <=> b;
writeln(a, b, foo);
3.1 定数
constで宣言された識別子は、定数となる。定数の値は変更できず、初期値で固定される。初期値は実行時に計算される。
const foo: int = 12;
const bar = 12;
paramで宣言された識別子は、静的定数となる。定数と同様に初期値で固定され、初期値はコンパイル時に計算される。
param foo: int = 12;
param bar = 12;
type num = int;
typeで宣言された識別子は、型定数となる。なお、静的定数には、以下に示す基本型または列挙型の値のみ設定できる。
param a: bool = true;
param b: uint = 1919;
param c: real = 8.10;
param d: imag = 364i;
param e: string = 'ABC' + "DEF";
param f: Gibier = Gibier.Rabbit;
enum Gibier {Deer, Boar, Rabbit};
3.2 設定
configを前置した変数や定数の値は、起動時に変更できる。同様に、静的定数や型定数も、コンパイル時に変更できる。
config const bar = 121;
config param foo = 121;
config type num = uint;
writeln(foo, bar, num: string);
例えば、定数barは、起動時に--barで設定できる。静的定数fooと型定数numは、コンパイル時に--setで設定できる。
$ chpl config.chpl --set foo=12321 --set num=real
$ ./config --bar=12321
1232112321real(64)