2010-05-21 4 views
0

정적 const 배열을 정의 할 수 있습니까? 내가 ... 내가 사용할 수있는 인수를 알고 있지만 실제로 옵션 인수로 2 개 개의 분리 배열 생성자를 제공하고자하는 색상의 배열 함수에ActionScript 정적 상수 배열 정의

private static const DEFAULT_COLORS:Array = new Array(0x000000, 0xFFFFFF); 

public function myConstructor(colorsArray:Array = DEFAULT_COLORS) 
{ 
} 

를 선택적 매개 변수를 가지고 싶습니다.

답변

3

가능하지,하지만 당신이이 동작을 시뮬레이션 할 수 있습니다 : 함수는 방식으로 코딩되는 경우

private static const DEFAULT_COLORS:Array = new Array(0x000000, 0xFFFFFF); 

public function myConstructor(colorsArray:Array = null) 
{ 
    colorsArray = colorsArray ? colorsArray : DEFAULT_COLORS; 
} 

이 작동하지 않습니다를 널 (null)가, (유효한 값이 될 수있는 몇 가지 조건을 알리기 위해 있도록 인스턴스)하지만 여기에는 해당되지 않습니다.

편집

당신이 myConstructor와, 여기 DEFAULT_COLORS의 복사본을 만드는 것이 현명 할 것입니다 colorsArray에 쓸 계획 인 경우 :

colorsArray = colorsArray ? colorsArray : DEFAULT_COLORS.slice(); 

DEFAULT_COLORS 배열에 대한 참조는 일정하지만, 그 내용은 그렇지 않으므로 실수로 기본값을 변경할 수 있습니다.

+0

답해 주셔서 감사합니다. 훌륭하게 작동합니다. 그러나 배열의 복사본을 만들지 않아 실수로 기본 색상을 변경하는 방법을 설명 할 수 있습니까? 나는 당신이 의미하는 바를 따르지 않는다. – TheDarkIn1978

+0

@ TheDarkIn1978. 확실한. 매개 변수없이 함수를 호출하면 (또는 null)'colorsArray'는'DEFAULT_COLORS'에 대한 참조가됩니다. 나는. 동일한 객체에 대한 액세스 권한을 부여합니다. 그런 다음, 함수의 어느 지점에서'colorsArray [0] = 0xffcc99; 또는'colorsArray.splice (0,1);'또는'colorsArray'를 수정하는 것이 있으면' DEFAULT_COLORS'을 (를) 아마도 의도하지는 않습니다. 이는 colorsArray가'DEFAULT_COLORS' const가 참조하는 것과 동일한 객체에 대한 참조 일 것이기 때문입니다. 복사를하면 그럴 수 없습니다. –