除了使用陣列來維護 PlayList 類別中的歌曲清單外,此範例中陣列也會用於 Song 類別,以協助管理特定歌曲所屬的類型清單。請考慮以下來自 Song 類別定義的程式碼片段:
private var _genres:String;
public function Song(title:String, artist:String, year:uint, filename:String, genres:Array)
{
...
// Genres are passed in as an array
// but stored as a semicolon-separated string.
this._genres = genres.join(";");
}
在建立新的 Song 實體時,用來指定歌曲所屬類型的
genres
參數會定義為 Array 實體。這樣可以方便將多個類型分組成可傳遞至建構函式的單一變數。然而在內部,Song 類別會將這些類型保留於私有
_genres
變數中,做為以分號區隔的 String 實體。Array 參數會藉由呼叫其
join()
方法,並以常值字串值
";"
做為指定的分隔符號,以便轉換為以分號區隔的字串。
藉由相同的字符,
genres
存取子允許將類型設定或擷取為 Array:
public function get genres():Array
{
// Genres are stored as a semicolon-separated String,
// so they need to be transformed into an Array to pass them back out.
return this._genres.split(";");
}
public function set genres(value:Array):void
{
// Genres are passed in as an array,
// but stored as a semicolon-separated string.
this._genres = value.join(";");
}
genres
set
存取子的表現方式和建構函式相同,它會採用 Array,並呼叫
join()
方法,將 Array 轉換為以分號區隔的 String。
get
存取子則執行反向作業:呼叫
_genres
變數的
split()
方法,使用指定的分隔符號 (即之前的常值字串值
";"
),將 String 分割為值陣列。