2013-07-06 2 views
0

변수에 저장된 클래스로 Vector를 초기화하는 방법은 무엇입니까?알 수없는 클래스 유형의 벡터 초기화

function initVector(Type:Class) { 
    var vec:Vector.<Type> = new Vector.<Type>() 
} 

initVector(int) 컴파일러 오류를 제공합니다 : 1046
: 유형이 없거나 컴파일 타임 상수가 아닙니다 : 입력합니다.
1120 : 정의되지 않은 속성 유형에 대한 액세스입니다.

이 작업을 수행하는 올바른 방법은 무엇입니까?

답변

2

내가 연구하고 숫자 유형 (int, uint 또는 Number)를 사용하는 경우에만, 차이를 만들 것입니다 당신의 벡터가 아닌 일반적인 유형을 지정, elsewhere 설명했듯이 - 사람들은 성능 최적화를 유사 콘텐츠 다른 모든 벡터들은 실제로 "후드"와 동일한 일반 Vector.<Object>입니다. 모든 유형 검사는 코드 작성과 관련하여 도움을주기 위해 컴파일 타임에 수행되지만 런타임에는 전혀 영향을 미치지 않습니다.

숫자 만 사용하지 않는 경우 (숫자로 전송하면 아이디어가 될 수 있음) Vector.<Object> 이상을 사용하는 것이 좋습니다. 더 나은 방법은 배열입니다.

+0

내가 이해 한 바로는 'int','uint' 및'Number' 컨테이너를 제외한 모든 경우에서'Array'가 Vector보다 더 좋다고 말하는 것입니다. 앞서 말한 것 이외의 다른 타입에'Vector'를 사용하는 것은 무엇입니까? – bananasplits

+0

그것은 지나치게 단순화하는 것입니다. 많은 경우에 입력 된 벡터를 사용하면 작성해야하는 코드의 양이 줄어들고 더 쉽게 읽을 수 있습니다. 성능 측면에서 더 나은 선택은 아닐지 모르지만 성능의 90 % 이상에서 가독성을 선택할 것입니다 - 대안이 '벡터'일 때만. ', 성능 최적화가 눈에 띄게 필요할 때 또는 수정 사항을 광범위하게 사용하는 경우 Array의 더 광범위한 API를 사용하면 더 효과적입니다. – weltraumpirat

+0

귀하의 경우에는 런타임에 벡터의 유형이 결정되므로 코드는 일반적으로 사용되어야하고 인트로 스펙 션, 타입 캐스팅 등을 사용해야합니다. 즉, 벡터를 사용하여 얻을 수있는 것은 없습니다. – weltraumpirat

관련 문제