在本示例中,数组除了用于在 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 实例形式来保存流派。通过调用 join() 方法(使用文本字符串值 ";" 作为指定分隔符),Array 参数将转换为以分号分隔的字符串。
通过使用相同的标记,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(";");
}
genresset 存取器的行为与构造函数完全相同;它接受 Array 并调用 join() 方法以将其转换为以分号分隔的 String。get 存取器执行相反的操作:调用 _genres 变量的 split() 方法,使用指定分隔符(采用与前面相同的文本字符串值 ";")将 String 拆分为值数组。