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()
메서드를 호출하여 이것을 세미콜론으로 구분된 문자열로 변환합니다. 반면
get
접근자는 이와 반대의 작업을 수행합니다. 즉
_genres
변수의
split()
메서드를 호출하여 지정된 구분 기호(앞서 언급한 리터럴 문자열 값인
";"
)를 사용하여 String을 값의 배열로 분할합니다.