声明数组变量(Crystal 语法)

可以通过下面含有关键字 Array 的类型名称来声明数组变量。

//将 x 声明为数字数组类型的全局变量
Global NumberVar Array x := [10 , 20, 30];
//Cost 是货币数组类型的全局变量。
//由于忽略了作用域指定符(Local、Global 或 Shared 其中之一),因此它将自动成为全局变量。
CurrencyVar Array cost := [$19.95, $79.50, $110.00,
$44.79, $223.99];
//payDays 是日期数组类型的全局变量。
Global DateVar Array payDays := [CDate(1999, 5, 15),
CDate(1999, 5, 31)];
//y 是字符串范围数组类型的共享变量。
Shared StringVar Range Array y := ["A" To "C",
"H" To "J"];
//days 是字符串数组类型的局部变量。
Local StringVar Array days;
days := ["Sun", "Mon", "Tue", "Wed", "Th", "Fri", "Sat"];

给数组元素赋值

可以给数组的元素赋值,也可以使用元素的值进行其他计算。

StringVar Array x := ["hello", "bye", "again"];
x [2] := "once"; // x == ["hello", "once", "again"]
//如果不把下面的表达式注释掉,它将引发错误,因为数组的大小是 3。
//该公式返回字符串“HELLO”。
UpperCase (x [1])

如果想在数组上添加额外的信息,可以使用 Redim 和 Redim Preserve 关键字调整数组的大小。Redim 首先清除数组原先的内容,然后调整数组大小,而 Redim Preserve 则保留原先的内容。

Local NumberVar Array x;
Redim x [2]; // x = [0, 0]
x [2] := 20; // x = [0, 20]
Redim x [3]; // x = [0, 0, 0]
x [3] := 30; // x = [0, 0, 30]
Redim Preserve x [4]; // x = [0, 0, 30, 0]
"finished"
Local StringVar Array a;
Redim a [2];
a[1] := "good";
a[2] := "bye";
a[1] & a[2] //该公式返回字符串“goodbye”

数组和 For 循环

数组通常用于 For 循环。下例使用 For 循环创建并使用数组 [10, 20, 30, ..., 100]。以下公式返回数字 20。

Local NumberVar Array b;
Redim b[10];
Local NumberVar i;
For i := 1 To 10 Do
(
b[i] := 10 * i
);
b [2]