陣列的基本概念

Flash Player 9 以及更新的版本,Adobe AIR 1.0 以及更新的版本

進行程式設計時,您要處理的往往不是單一物件,而是一組項目。例如,在音樂播放應用程式中,可能會有包含多首歌曲並準備播放的清單。您不會希望為清單上的每首歌曲建立不同的變數,而是希望這些 Song 物件最好能全部結合起來,並且能夠以群組的方式加以處理。

陣列是程式設計的元素,可做為一組項目的容器,如歌曲清單等。在大部分情況下,陣列中的所有項目都是相同類別的實體,但是對 ActionScript 來說,這並非必要條件。陣列中的各個項目稱為陣列的「元素」。您可以將陣列想成是變數的檔案抽屜。變數可當做元素以新增至陣列中,就像把資料夾放進檔案抽屜一樣。您可以將陣列當做單一變數來使用 (如同將整個抽屜搬移至不同位置),或將變數當做群組來使用 (就像逐一翻閱資料夾以尋找資訊),或者是個別存取這些檔案 (如同打開抽屜,選取單一資料夾)。

舉例來說,假設您要建立音樂播放應用程式,讓使用者可以選取多首曲目並新增至播放清單。那麼,在 ActionScript 程式碼中就要有名為 addSongsToPlaylist() 的方法,這個方法會使用單一陣列做為參數。無論要在清單中新增多少歌曲 (少數幾首、多首,或甚至只有一首),都只要呼叫 addSongsToPlaylist() 方法一次,將內含 Song 物件的陣列傳送過去即可。在 addSongsToPlaylist() 方法中,您可以使用迴圈逐一瀏覽陣列的元素 (歌曲),並將這些元素實際新增至播放清單。

最常見的 ActionScript 陣列類型是「索引陣列」。在索引陣列中,每個項目都會儲存在具有編號的位置 (稱為「索引」),而編號就像地址一樣,可以用來存取項目。索引陣列的運作方式可以符合大部分程式設計的需求。Array 是用來表示索引陣列的常見類別。

索引陣列時常用於儲存多個相同類型的項目 (本身為相同類別之實體的物件)。Array 類別不表示會限制本身所包含的項目類型。Vector 類別的類型是索引陣列,其中單一陣列內的所有項目都具有相同類型。使用 Vector 實體 (而非 Array 實體) 時,也能改善效能並具有其它優點。從 Flash Player 10 和 Adobe AIR 1.5 開始,Vector 類別已可供使用。

索引陣列的其中一種特殊用法,就是「多維度陣列」。所謂多維度陣列,就是其元素都是索引陣列的索引陣列 (其中前者又包含其它元素)。

另一種陣列是「關聯陣列」,這種陣列會以字串「索引鍵」而非數值索引來識別各個元素。最後,ActionScript 3.0 也包含了 Dictionary 類別,這個類別表示「字典」。字典是一個陣列,可讓您將任何類型的物件當做索引鍵來使用,以區分各個元素。

重要概念與術語

下列參考清單包含撰寫陣列和向量處理常式時會遇到的相關重要術語:

Array
一種做為容器的物件,可將多個物件群組起來。

陣列存取 ([]) 運算子
一對括住索引或索引鍵 (可唯一識別陣列元素) 的方括號。這個語法使用時會加在陣列變數名稱後方,以指定陣列的單一元素 (而非整個陣列)

關聯陣列
使用字串索引鍵來識別各個元素的陣列。

基底類型
Vector 實體可以儲存的物件資料類型。

Dictionary
其項目是由物件配對 (即索引鍵與值) 所組成的陣列。此索引鍵會取代數值索引來識別單一元素

元素
陣列中的單一項目。

索引
即數值「位址」,用來識別索引陣列中的單一元素。

索引陣列
標準的陣列類型,它會將每個元素儲存在具有編號的位置,並使用此編號 (索引) 來識別各個元素。

按鍵
在關聯陣列或字典中,用來識別單一元素的字串或物件。

多維陣列
這種陣列所包含的項目是陣列,而非單一值。

T
標準慣例,在本說明文件中用於表示 Vector 實體的基底類型 (無論此基底類型為何都一樣)。T 慣例可用於表示類別名稱,您可以在類型參數的說明中找到相關描述 (「T」表示「類型」,就像「資料類型」一樣)。

類型參數
搭配 Vector 類別名稱所使用的語法,以指定 Vector 的基底類型 (此類別所儲存的物件資料類型)。這個語法的開頭為一個點 ( . ),後面再接著由角括號 ( <> ) 括住的資料類型名稱。完成之後,看起來就像: Vector.<T> 。在本說明文件中,類型參數內指定的類別通常會表示為 T

Vector
一種陣列類型,陣列中的所有元素都是具有相同資料類型的實體。