DS 리스트 (DS Lists)
DS 리스트는 정보를 순차적으로 저장하는 데이터 구조입니다. 배열과 비슷하게 작동하며, 리스트의 끝에 값을 추가하거나 중간에 삽입할 수 있는 유연한 구조입니다. 또한, 값을 무작위로 섞거나 오름차순 또는 내림차순으로 정렬할 수 있는 기능도 제공합니다.
DS 리스트 사용 권장 사항
- DS 리스트는 배열보다 유사한 기능을 가지고 있지만, 배열이 더 사용하기 쉽고 자동으로 가비지 수집됩니다. 따라서 배열을 사용하는 것이 권장됩니다.
- DS 리스트의 데이터 구조에 접근할 때는 항상 정수 값을 사용해야 하며, 비정수 인덱스는 GameMaker에 의해 내림 처리됩니다. 원하는 결과가 아닐 경우, 인덱스를 전달하기 전에 직접 반올림해야 합니다.
접근자 (Accessor)
특정 함수 외에도 DS 리스트의 내용을 추가하거나 수정하기 위해 접근자를 사용할 수 있습니다. 접근자는 1D 배열과 유사한 구문을 가지고 있습니다:
||
||
주요 함수 목록
함수 이름 | 설명 |
---|---|
ds_list_create | DS 리스트 생성 |
ds_list_destroy | DS 리스트 삭제 |
ds_list_clear | DS 리스트 내용 초기화 |
ds_list_empty | DS 리스트가 비어있는지 확인 |
ds_list_size | DS 리스트의 크기 반환 |
ds_list_add | DS 리스트에 값 추가 |
ds_list_set | DS 리스트의 특정 인덱스에 값 설정 |
ds_list_delete | DS 리스트에서 특정 인덱스의 값 삭제 |
ds_list_find_index | 값의 인덱스 찾기 |
ds_list_find_value | 특정 값 찾기 |
ds_list_insert | DS 리스트의 특정 위치에 값 삽입 |
ds_list_replace | DS 리스트의 특정 인덱스 값 교체 |
ds_list_shuffle | DS 리스트의 값 무작위로 섞기 |
ds_list_sort | DS 리스트 정렬 |
ds_list_copy | DS 리스트 복사 |
ds_list_read | DS 리스트 읽기 |
ds_list_write | DS 리스트 쓰기 |
JSON 관련 함수 | DS 리스트를 JSON으로 인코딩 |
DS 리스트와 다른 데이터 구조
DS 리스트는 DS 맵 및 다른 DS 리스트를 포함할 수 있으며, 이러한 데이터 구조를 포함하는 위치를 "플래그"하거나 "표시"하는 특별한 함수가 있습니다. 일반적으로 이는 필요하지 않지만, 부모 리스트가 삭제될 때 자동으로 가비지 수집되는 장점이 있습니다. JSON 인코딩과 함께 사용할 때도 필요합니다.
함수 이름 | 설명 |
---|---|
ds_list_mark_as_list | DS 리스트로 표시 |
ds_list_mark_as_map | DS 맵으로 표시 |
ds_list_is_list | 특정 위치가 DS 리스트인지 확인 |
ds_list_is_map | 특정 위치가 DS 맵인지 확인 |
활용 예제
다음은 DS 리스트를 활용하는 몇 가지 예제입니다:
// DS 리스트 생성
var my_list = ds_list_create();
// 값 추가
ds_list_add(my_list, "첫 번째 값");
ds_list_add(my_list, "두 번째 값");
// 특정 인덱스에 값 설정
ds_list_set(my_list, 1, "수정된 두 번째 값");
// 값 삭제
ds_list_delete(my_list, 0);
// 리스트 크기 확인
var size = ds_list_size(my_list);
// 리스트 내용 초기화
ds_list_clear(my_list);
// 리스트 삭제
ds_list_destroy(my_list);
// DS 리스트에 DS 맵 추가
var my_map = ds_map_create();
ds_map_add(my_map, "키", "값");
ds_list_add(my_list, my_map);
// DS 리스트에서 DS 맵 확인
if (ds_list_is_map(my_list, 0)) {
var retrieved_map = ds_list_find_value(my_list, 0);
}
// DS 리스트를 JSON으로 인코딩
var json_data = json_encode(my_list);
이와 같은 방식으로 DS 리스트를 활용하여 다양한 데이터 구조를 관리하고 조작할 수 있습니다.