Workspace/ASP Classic

ASP Classic - Array 특징, 컬렉션 타입으로 사용하는 법

RHBY 2020. 10. 19. 15:08

1. ASP에서 사용하는 배열은 Java에서 사용하는 배열과 크기 계산 방식이 다르다.

ex - ASP) 

Dim aryList(3, 5) // 4x6 크기의 배열 생성

 

ex - Java)

int A[ ][ ] = new Int[3][5]; // 3x5 크기의 배열 생성

 

크기가 다른 이유?

ASP에서는 (3, 5) 크기의 배열을 0~3, 0~5까지 생성하고

Java에서는 (3, 5) 크기의 배열을 0~2, 0~4까지 생성한다.

즉, 선언 시 크기로 지정한 숫자도 배열의 대상으로 포함한다.

 

2. Java의 배열과는 다르게 배열 크기를 실행 도중 변경할 수 있다.

ex - ASP)

Dim aryList(2)

aryList(0) = 0

aryList(1) = 1

aryList(2) = 2

 

ReDim aryList(3) // 배열의 크기를 0~3으로 변경

Response.Write aryList(0) // ReDim을 통한 배열 크기 조정 시 기존 데이터 모두 파손됨. 그러므로 출력 오류.

 

그렇다면 데이터를 그대로 보존하고 크기를 재생성 하는 방법은 무엇일까?

 

ReDim Preserve aryList(3) // 배열의 크기를 0~3으로 변경하면서, 데이터는 그대로 보존함.

Response.Write aryList(0) // 데이터가 보존되어 있으므로 출력값은 0.

 

이러한 특성을 이용해 배열을 List 컬렉션 형태로 생성할 수 있다.

 

Function resizeArray(aryList)

    Dim length : length = Ubound(aryList)

    length = length + 1

 

    ReDim Preserve aryList(length)

    resizeArray = aryList

End Function

 

해당 함수를 사용해 배열의 길이가 최대치에 도달했을 경우 배열의 길이를 늘려 컬렉션 형태로 사용할 수 있게 된다.