[VBScript] 程式設計教學:建立和使用陣列 (Array)

【分享本文】
Facebook Twitter LinkedIn LINE Skype EverNote GMail Yahoo Email

    陣列 (array) 是一種線性的 (linear) 資料結構,可利用整數為索引 (index) 存取其中的元素;由於微軟 (Microsoft) 未詳細提及陣列內部的實作,我們只要以高階抽象的想法使用陣列即可。

    在 VBScript 的陣列有兩種,固定大小的陣列再可伸長的動態陣列,兩者使用方式大抵相同,只差在是否可延長。

    以下範例建立一個固定長度為 4 的陣列,並存取其元素:

    ' Create a fix-sized array.
    Dim arr(3)
    
    ' Mutate the elements in arr.
    arr(0) = "Batch"
    arr(1) = "VBScript"
    arr(2) = "JScript"
    arr(3) = "PowerShell"
    
    ' Retrieve an element from arr.
    WScript.Echo arr(2)
    

    表面上看起來陣列的長度是 3,但 VBScript 的陣列是從 0 計算,故實際長度為 4。很少有程式語言的陣列是這樣設計,最好把參數視為最大索引值而非陣列大小。

    使用 For Each ... Next 敘述可以走訪陣列:

    ' Declare a fixed array.
    Dim arr(3)
    
    ' Mutate the elements in arr.
    arr(0) = "Batch"
    arr(1) = "VBScript"
    arr(2) = "JScript"
    arr(3) = "PowerShell"
    
    ' Iterate through arr.
    For Each e in arr
    	WScript.Echo e
    Next
    

    我們也可以用計數器來走訪陣列,這時候要用 UBound 函式取得計數器的上限:

    ' Declare a fixed array.
    Dim arr(3)
    
    ' Mutate the elements in arr.
    arr(0) = "Batch"
    arr(1) = "VBScript"
    arr(2) = "JScript"
    arr(3) = "PowerShell"
    
    ' Iterate through arr.
    For i = 0 to UBound(arr)
    	WScript.Echo arr(i)
    Next
    

    除了一維陣列,我們也可以建立多維陣列。如下例:

    Dim mtx(1, 2)
    
    mtx(0, 0) = 1
    mtx(0, 1) = 2
    mtx(0, 2) = 3
    mtx(1, 0) = 4
    mtx(1, 1) = 5
    mtx(1, 2) = 6
    
    For i = 0 to UBound(mtx)
    	For j = 0 to UBound(mtx, 2)
    		WScript.StdOut.Write mtx(i, j)
    		
    		If j < UBound(mtx, 2) Then
    			WScript.StdOut.Write ", "
    		End If
    	Next
    	
    	WScript.StdOut.Write vbNewLine
    Next
    

    在我們這個例子中,由於我們要控制換行字元出現的時機,我們不用 WScript.Echo 而改用 WScript.StdOut.Write 來輸出資料。

    前述的陣列大小固定,相較起來,動態陣列的特色在於可動態改變其大小,使用實例如下:

    ' Declare a dynamic array.
    ReDim arr(3)
    
    ' Mutate the elements in arr.
    arr(0) = "Batch"
    arr(1) = "VBScript"
    arr(2) = "JScript"
    arr(3) = "PowerShell"
    
    ' Extend `arr`.
    ReDim Preserve arr(6)
    
    ' Mutate the elements in arr again.
    arr(4) = "Visaul Basic"
    arr(5) = "C#"
    arr(6) = "F#"
    
    ' Iterate through arr.
    For Each e in arr
    	WScript.Echo e
    Next
    

    使用 ReDim 語法可建立動態陣列。在伸長動態陣列時,要用 ReDim Preserve 語法才會保留先前的元素。

    【分享本文】
    Facebook Twitter LinkedIn LINE Skype EverNote GMail Yahoo Email
    【追蹤新文章】
    Facebook Twitter Plurk
    標籤: VBSCRIPT, 陣列