배열 함수
배열과 관련된 몇 가지 함수가 있습니다. 이러한 함수들은 코드에서 유연성을 제공하며, 게임을 만들 때 더 기능적이고 동적인 배열을 생성할 수 있도록 도와줍니다.
기본 배열 함수
함수 이름 | 설명 |
---|---|
array_create |
새로운 배열을 생성합니다. |
array_copy |
배열을 복사합니다. |
array_equals |
두 배열이 같은지 비교합니다. |
array_get |
배열의 특정 인덱스에 있는 값을 가져옵니다. |
array_set |
배열의 특정 인덱스에 값을 설정합니다. |
array_push |
배열의 끝에 값을 추가합니다. |
array_pop |
배열의 마지막 값을 제거하고 반환합니다. |
array_shift |
배열의 첫 번째 값을 제거하고 반환합니다. |
array_insert |
배열의 특정 위치에 값을 삽입합니다. |
array_delete |
배열의 특정 인덱스의 값을 삭제합니다. |
array_get_index |
특정 값의 인덱스를 찾습니다. |
array_contains |
배열에 특정 값이 포함되어 있는지 확인합니다. |
array_contains_ext |
배열에 특정 값이 포함되어 있는지 확인합니다 (확장). |
array_sort |
배열을 정렬합니다. |
array_reverse |
배열의 순서를 반전합니다. |
array_shuffle |
배열의 요소를 무작위로 섞습니다. |
array_length |
배열의 길이를 반환합니다. |
array_resize |
배열의 크기를 조정합니다. |
array_length_1d |
1차원 배열의 길이를 반환합니다. |
array_length_2d |
2차원 배열의 길이를 반환합니다. |
array_height_2d |
2차원 배열의 높이를 반환합니다. |
array_first |
배열의 첫 번째 요소를 반환합니다. |
array_last |
배열의 마지막 요소를 반환합니다. |
고급 배열 함수
함수 이름 | 설명 |
---|---|
array_find_index |
조건에 맞는 요소의 인덱스를 찾습니다. |
array_any |
배열의 요소 중 하나라도 조건을 만족하는지 확인합니다. |
array_all |
배열의 모든 요소가 조건을 만족하는지 확인합니다. |
array_foreach |
배열의 각 요소에 대해 함수를 실행합니다. |
array_reduce |
배열의 요소를 누적하여 단일 값으로 만듭니다. |
array_concat |
두 배열을 연결합니다. |
array_union |
두 배열의 합집합을 구합니다. |
array_intersection |
두 배열의 교집합을 구합니다. |
array_filter |
조건에 맞는 요소만 포함한 배열을 반환합니다. |
array_map |
배열의 각 요소에 함수를 적용합니다. |
array_unique |
중복된 요소를 제거한 배열을 반환합니다. |
array_copy_while |
조건을 만족하는 요소를 복사합니다. |
확장 배열 함수
함수 이름 | 설명 |
---|---|
array_create_ext |
확장된 배열을 생성합니다. |
array_filter_ext |
확장된 조건으로 배열을 필터링합니다. |
array_map_ext |
확장된 함수를 배열에 적용합니다. |
array_unique_ext |
확장된 중복 제거를 수행합니다. |
array_reverse_ext |
확장된 배열의 순서를 반전합니다. |
array_shuffle_ext |
확장된 배열의 요소를 무작위로 섞습니다. |
콜백 메서드
콜백 메서드는 array_foreach
와 같은 배열 함수에 전달됩니다. GameMaker는 주어진 배열의 각 요소에 대해 콜백 메서드를 실행합니다. 배열의 각 요소에 대해 두 개의 인수를 콜백 메서드에 전달합니다:
- 배열 요소의 값
- 배열 요소의 인덱스
콜백 메서드에서 이러한 인수를 사용하여 반환 값을 계산할 수 있습니다. 예를 들어, array_map
과 같은 함수에서 필요할 수 있습니다. 콜백 메서드가 각 요소에 대해 반환하는 값에 따라 결과 값이나 수정된 배열이 반환됩니다. 그러나 _ext
함수 중 하나를 사용하는 경우 원래 배열이 수정됩니다.
프레디케이트 메서드
콜백 메서드가 true
또는 false
만 반환해야 할 때, 이를 프레디케이트 메서드라고 합니다. 프레디케이트는 배열의 요소가 조건을 만족하는지 여부를 판단하는 데 사용됩니다.
예제: 프레디케이트
배열에 문자열 "apple"이 포함되어 있는지 확인하는 프레디케이트 메서드를 만들어 보겠습니다. 이를 위해 array_any
함수를 사용합니다:
var _array = ["apple", "banana", "coconut", "dragonfruit"];
var _contains_apple = array_any(_array, function(_val, _ind) {
return _val == "apple";
});
show_debug_message(_contains_apple); // 1 (true) 출력
우리의 프레디케이트 메서드는 _val == "apple"
을 확인하고 결과를 반환합니다. 배열의 요소 중 하나라도 이 조건이 참이면 array_any
는 true
를 반환합니다.
기본적으로 프레디케이트 메서드는 배열의 모든 요소에서 실행되지만, 대부분의 고급 배열 함수는 두 개의 추가 매개변수인 offset
과 length
를 받습니다.
오프셋과 길이
offset
과 length
매개변수를 사용하면 함수가 배열의 어떤 부분을 살펴볼지, 어떤 방향으로 진행할지를 결정할 수 있습니다 (앞으로 또는 뒤로).
offset
은 함수가 배열에서 작업을 시작하는 0 기반 인덱스입니다.offset
은 음수일 수 있으며, 이 경우 배열의 끝에서 시작합니다. 예를 들어,-1
은 배열의 마지막 요소를 참조하고,-2
는 두 번째 마지막 요소를 참조합니다.length
는offset
에서 시작하여 배열에서 확인할 요소의 수입니다.length
도 음수일 수 있으며, 이 경우 함수는 뒤로 작업합니다. 예를 들어,offset
이3
이고length
가3
이면 요소3
,4
,5
가 포함됩니다.length
가-3
이면 요소3
,2
,1
이 포함됩니다.
infinity
또는 -infinity
를 length
로 사용하여 배열의 끝이나 시작까지 탐색할 수 있습니다. 함수가 수정된 배열을 반환하는 경우, 작업된 요소만 반환되며, 작업된 순서대로 반환됩니다. 예를 들어, offset
이 3
이고 length
가 3
인 경우, 요소 3
, 4
, 5
가 작업되고 새로운 배열로 반환되며, 나머지 요소는 버려집니다.