在大多數情況下,宣告變數後,只會為它指派單一值。包含單一值的變數稱為純量變數。有時為了方便,可將多個相關值指派給單一變數。您可以建立可包含一系列值的變數。這類變數稱為陣列變數。陣列變數與純量變數的宣告方式相同,不同的是,陣列變數的宣告會在變數名稱後方加上括號 ( )。
在下列範例中,宣告了一個包含 11 個元素的單一維度陣列:
Dim A(10)
雖然括號中顯示的數字是 10,但 BSL 中的所有陣列都是零基。因此,此陣列包含 11 個元素。在零基陣列中,陣列元素數一律是括號中顯示的數字加一。這類陣列稱為固定大小陣列。
您可以使用索引,將資料指派給陣列中的每個元素。從零開始到 10 結束,資料可指派給陣列的元素,如下所示:
A(0) = 256
A(1) = 324
A(2) = 100
. . .
A(10) = 55
同樣地,你也可以使用索引,從您要的任何陣列元素中擷取資料。
例如:
SomeVariable = A(8)
陣列不限於單一維度。您可以在括號中以逗號分隔陣列的大小數字,以宣告多個維度。在下列範例中,MyTable 變數是由 6 列與 11 欄所組成的二維陣列:
Dim MyTable(5,10)
在二維陣列中,第一個數字一律是列數,第二個數字是欄數。
您也可以宣告一個在指令碼執行期間,大小會變更的陣列。這類陣列稱為動態陣列。此陣列最初是在程序中,使用 Dim 陳述式或 ReDim 陳述式來宣告。不過,對於動態陣列,不會在括號內指定大小或維度數。
例如:
Dim MyArray() ReDim AnotherArray() ' Illegal as no dimension specified ReDim AnotherArray(3)
若要使用動態陣列,之後必須使用 ReDim 決定維度數和每個維度的大小。在下列範例中,ReDim 會將動態陣列的初始大小設為 25。後續的 ReDim 陳述式會將陣列大小調整為 30,但同時使用 Preserve 關鍵字,在調整大小時保留陣列的內容。
ReDim MyArray(25) . . . ReDim Preserve MyArray(30)
調整動態陣列大小的次數並無限制,不過如果您縮小陣列,會遺失被排除元素中的資料。
下列範例說明純量變數和陣列變數的用法:
範例 1:
Dim B B = 200 ' Assigns the value 200 to the variable B.
範例 2:
Dim A(3) ' Declares a single-dimension array with 4 elements 0 to 3 indexes. ' Assigning values to each element of the array. A(0) = 256 A(1) = 324 A(2) = 100 ' Retrieving a value from the array. Dim SomeVariable SomeVariable = A(1) ' Retrieves the value at index 1.
範例 3:
Dim MyArray() ' Declares a dynamic array. ReDim MyArray(25) ' Sets the initial size of the dynamic array to 25 elements. ' Assigning values to the dynamic array. MyArray(0) = "First" MyArray(25) = "Last" ' Resizing the dynamic array and preserving contents. ReDim Preserve MyArray(30) ' Resizes the array to 30 elements and preserves existing data.
範例 4:
Dim AnotherArray() ReDim AnotherArray(10) ' Initial size of 10 elements. ' Assigning values to the array. AnotherArray(0) = "Alpha" AnotherArray(10) = "Omega" ' Resizing the array multiple times. ReDim Preserve AnotherArray(20) AnotherArray(20) = "NewElement" ReDim Preserve AnotherArray(5) ' Reduces the size of the array (data beyond index 5 is lost).