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