DS 맵 확인 함수: ds_map_is_map
이 문서에서는 ds_map_is_map
함수에 대해 설명합니다. 이 함수는 주어진 맵 키에 DS 맵이 저장되어 있는지 확인하는 데 사용됩니다. 만약 주어진 키가 DS 맵 ID를 포함하고 있다면, 함수는 true
를 반환하고, 그렇지 않으면 false
를 반환합니다. 이 함수는 ds_map_add_map
함수를 사용하여 추가된 맵만 감지합니다.
문법
ds_map_is_map(id, key)
매개변수 설명
매개변수 | 유형 | 설명 |
---|---|---|
id | DS Map | 사용할 맵의 핸들 |
key | String | 대체할 키 |
반환값
- Boolean: DS 맵이 존재하면
true
, 아니면false
예제 코드
다음 코드는 DS 맵을 반복하면서 그 안의 키가 다른 DS 맵인지 확인합니다. 만약 그렇다면, 저장된 DS 맵이 파괴되고, 루프가 끝난 후에 메인 DS 맵도 파괴됩니다.
var size = ds_map_size(inventory);
var key = ds_map_find_first(inventory);
for (var i = 0; i < size; i++) {
if (ds_map_is_map(inventory, key)) {
ds_map_destroy(inventory[? key]);
}
key = ds_map_find_next(inventory);
}
ds_map_destroy(inventory);
활용 예제
- 중첩된 DS 맵 삭제
여러 개의 DS 맵이 중첩되어 있을 때, 이를 확인하고 삭제하는 코드입니다.gml var main_map = ds_map_create(); var sub_map = ds_map_create(); ds_map_add_map(main_map, "sub", sub_map); if (ds_map_is_map(main_map, "sub")) { ds_map_destroy(main_map[? "sub"]); }
- 맵의 모든 DS 맵 확인
DS 맵 안에 있는 모든 키를 확인하여 DS 맵인지 체크하는 코드입니다.gml var map = ds_map_create(); // 여러 개의 키 추가 ds_map_add(map, "key1", "value1"); ds_map_add_map(map, "key2", ds_map_create()); ds_map_add(map, "key3", "value3"); var key = ds_map_find_first(map); while (key != noone) { if (ds_map_is_map(map, key)) { // DS 맵일 경우 처리 } key = ds_map_find_next(map); }
- 조건부 삭제
특정 조건을 만족하는 DS 맵만 삭제하는 코드입니다.gml var inventory = ds_map_create(); // 아이템 추가 ds_map_add(inventory, "item1", "value1"); ds_map_add_map(inventory, "item2", ds_map_create()); if (ds_map_is_map(inventory, "item2")) { ds_map_destroy(inventory[? "item2"]); }
이와 같이 ds_map_is_map
함수는 DS 맵을 관리하는 데 유용하게 사용될 수 있습니다.