맥스스크립트 기초

배열

스크립팅하는애님 2019. 7. 3. 22:27
728x90
반응형

안녕하세요.

오늘은 배열에 대해서 얘기해 봅시다.

배열은 여러 개의 변수가 모여 있는 변수의 집합입니다.

지금까지 배운 변수들이 하나의 상자라면 배열은 그런 상자들이 여러 개 모여있는 것입니다.

넣을 수 있는 타입도 개수도 제한이 없습니다.

심지어 배열 안에 배열도 넣을 수 있습니다.

배열은 복수개의 값이 있기 때문에 반복문(for, while문)과 연결되어 사용되는 경우가 많습니다.

백문이 불여일견이니 확인해 보도록 합시다.

 

1
value_array = #()
cs

 

이것은 배열형 변수인 'value_array'를 만드는 명령입니다.

배열에 들어가는 값은 '#(값1, 값2, 값3, .... 값n)'과 같은 형태를 가져야 합니다.

위에 적은 입력값은 '#()'안에 값이 없기 때문에 비어있는 형태입니다.(이런 식으로 빈 배열을 만드는 경우가 많으니 기억해 주시면 좋습니다.)

위에 만든 배열에 값을 넣어 봅시다.

 

 

1
value_array = #(1, 5, 10, 15)
cs

 

이렇게 한 번에 값을 넣어 주는 방법도 있지만 필요한 부분을 따로따로 넣어주는 방법도 있습니다.

 

1
2
3
4
value_array[1] = 1
value_array[2] = 5
value_array[3] = 10
value_array[4] = 15
cs

 

이 방법과 위의 방법은 동일한 결과를 보여 줍니다.

여기서 알 수 있는 것 중에 3Ds MAX의 배열은 '0'이 아닌 '1'부터 시작한다는 것입니다.

다른 프로그래밍 언어를 배우신 분은 이 부분이 생소하게 보일 수도 있습니다.

 

이렇게 입력을 한다면
다른 입력방식이라도 두 배열의 값이 동일하다.

 

'value_array1'의 값을 바꿔 봅시다.

 

1
value_array1[1] = 3
cs

 

 

 

'value_array1[1] = 3'은 배열'value_array1'의 첫 번째 값에 3을 넣는 것이기 때문에 위와 같은 결과를 보여줍니다.

그렇다면 존재하지 않는 배열'value_array1'의 다섯 번째에 값을 넣어 보면 어떻게 될까요?

 

1
value_array1[5] = 20
cs

 

 

 

없던 것이 추가됩니다.

이는 맥스 스크립트 배열의 특징으로 배열의 길이가 자동으로 변동되기 때문입니다.

그럼 'value_array1'의 열 번째에 값을 넣는 다면 어떻게 될까요?

 

1
value_array1[10] = 7
cs

 

 

배열 'value_array1'의 열번째에 '7'이라는 값이 들어갑니다.

그런데 여섯, 일곱, 여덟 번째에는 값이 'undefined'라고 나옵니다.

배열은 비어 있을 때 'undefined'(정의되지 않음)가 적용됩니다.

그럼 2번째의 값 '5'를 숫자가 아닌 문자열로 바꾸면 어떻게 될까요?

1
value_array1[2] = "Love"
cs

 

 

값이 정확히 바뀌었습니다.

배열은 이와 같이 하나의 배열 안에 여러 가지 형을 포함할 수 있습니다.

다음과 같이 입력하여 확인해 봅시다.

 

1
2
value_array3 = #(3, 4.5, "Hi", #(1, 2, 3))
format "value_array3 = %\n" value_array3
cs

 

 

정수, 소수, 문자열, 배열까지 배열 안에 포함 되어 있습니다.

배열안에 배열이 있는 경우 2차원 배열이라고 하고 그보다 더 상위 차원의 배열은 거의 쓰이는 경우가 없습니다.

2차원의 배열의 경우 값에 접근하는 방법은 다음과 같습니다.

1
2
3
4
5
6
7
value_array4 = #(#(1, 2), #(3, 4), #(5, 6))
format "value_array4[1][1] = %\n" value_array4[1][1]
format "value_array4[1][2] = %\n" value_array4[1][2]
format "value_array4[2][1] = %\n" value_array4[2][1]
format "value_array4[2][2] = %\n" value_array4[2][2]
format "value_array4[3][1] = %\n" value_array4[3][1]
format "value_array4[3][2] = %\n" value_array4[3][2]
cs

 

 

'value_array4 = #(#(1, 2), #(3, 4), #(5, 6))'에서 'value_array4[1][2]'의 첫 번째'[1]'은

value_array4의 첫 번째 배열 값인 '#(1,2)'를 가리킵니다.

그리고 두 번째 '[2]'는 value_array4의 첫 번째 배열 값 안의 두 번째 배열 값인 '2'를 가리 킵니다.

위 결과 값을 대조해 보시면 쉽게 이해되실 겁니다.

 

다음에는 배열의 함수에 대해서 알아 보도록 하겠습니다.

728x90
반응형

'맥스스크립트 기초' 카테고리의 다른 글

반복문(for)  (8) 2019.07.09
제어문(case)  (5) 2019.07.07
제어문(if)  (3) 2019.07.07
배열 함수  (3) 2019.07.05
변수의 범위  (10) 2019.07.02
변수의 연산  (0) 2019.07.01
변수  (0) 2019.07.01
MAXScript Listener  (0) 2019.06.30