array_shift 함수 설명 및 활용 예제
함수 설명
array_shift
함수는 주어진 배열의 첫 번째 요소를 제거하고 그 값을 반환하는 기능을 합니다. 이로 인해 나머지 요소들은 왼쪽으로 한 칸씩 이동하게 됩니다. 즉, 인덱스 0의 값이 제거되고, 인덱스 1의 값이 인덱스 0으로 이동하며, 인덱스 2의 값은 인덱스 1로 이동하는 식입니다. 배열의 요소 수는 1 감소하게 되며, 마지막 요소를 대체할 값이 없기 때문입니다.
이 함수는 array_pop
과 동일하게 작동하지만, 마지막 요소 대신 첫 번째 요소를 제거하고 반환합니다. 배열에서 첫 번째 요소를 제거하지 않고 가져오려면 array_first
함수를 사용합니다.
문법
array_shift(array);
매개변수
매개변수 | 타입 | 설명 |
---|---|---|
array | Array | 첫 번째 요소를 반환하고 제거할 배열 |
반환값
- 제거된 첫 번째 배열 요소의 타입
예제
예제 1: 기본 사용법
var _array = ["A", "B", "C"];
repeat(2) {
array_shift(_array);
}
show_debug_message(_array);
위 코드는 _array
배열에 대해 array_shift
를 두 번 호출합니다. 첫 번째 호출에서 "A"가 제거되고, 두 번째 호출에서 "B"가 제거됩니다. 따라서 최종적으로 배열에는 "C"만 남게 됩니다.
예제 2: array_shift
와 array_push
를 이용한 큐
var _queue = [];
var _incoming = ["S", "O", "M", "E", " ", "L", "E", "T", "T", "E", "R", "S"];
MAX_QUEUE_LENGTH = 4;
var _len = array_length(_incoming), i = 0;
repeat(_len) {
array_push(_queue, _incoming[i]);
if (array_length(_queue) > MAX_QUEUE_LENGTH) {
array_shift(_queue);
}
i++;
}
위 코드는 array_shift
와 array_push
를 사용하여 큐처럼 작동하는 임시 배열 _queue
를 생성합니다. 두 번째 배열 _incoming
의 문자들이 반복문을 통해 큐 배열에 하나씩 추가됩니다. 큐의 길이가 4를 초과할 경우, array_shift
를 사용하여 첫 번째 요소를 제거합니다.
예제 3: 배열 회전
var _array = ["F", "O", "R", "E", "V", "E", "R"];
repeat(10) {
array_push(_array, array_shift(_array));
show_debug_message(_array);
}
위 예제에서는 배열 _array
가 10번 회전됩니다. 배열을 "회전"한다는 것은 한 쪽 끝에서 요소를 제거하고 다른 쪽 끝에 다시 추가하는 것을 의미합니다. 배열의 길이는 동일하게 유지됩니다. 각 반복마다 문자들이 왼쪽으로 이동하며, 각 반복 후 배열의 내용을 보여주는 디버그 메시지가 출력됩니다.
추가 활용 예제
예제 4: 배열에서 특정 조건을 만족하는 요소 제거
var _array = [1, 2, 3, 4, 5];
while (array_length(_array) > 0) {
var value = array_shift(_array);
if (value % 2 == 0) {
show_debug_message("Removed even number: " + string(value));
}
}
예제 5: 사용자 입력을 큐에 저장
var _queue = [];
while (true) {
var user_input = get_user_input(); // 사용자 입력 함수
array_push(_queue, user_input);
if (array_length(_queue) > MAX_QUEUE_LENGTH) {
array_shift(_queue);
}
}
예제 6: 배열을 사용한 게임 오브젝트 관리
var _active_objects = [];
var _new_object = create_new_object(); // 새로운 오브젝트 생성 함수
array_push(_active_objects, _new_object);
if (array_length(_active_objects) > MAX_ACTIVE_OBJECTS) {
array_shift(_active_objects);
}
이와 같이 array_shift
함수는 다양한 상황에서 유용하게 활용될 수 있습니다.