티스토리 뷰

728x90

요즘 많이 사용하는 프로그래밍 언어를 접하다 보면 무엇보다 매력적인 것이 사전 타입의 지원이다. 키 값에 따라 다양한 타입의 값을 가질 수 있고 위의 color 항목들처럼 사전 속에 사전 타입을 가질 수 있다. 사전 상수는 위의 예제처럼 {중괄호} 속에 키:값의 목록을 기술하면 된다. 빈 사전 타입을 선언하려면 var adic = {}와 같이 기술하면 된다.

 

중괄호 속에 키 = 값의 목록으로 기술하는 방법도 있는데 이 경우 키는 따옴표를 붙이지 않으며 자동으로 문자열 타입의 키로 간주된다.

 

사전 타입 변수는 키 값을 가지고 개별 항목에 접근할 수 있으며 해당 키가 존재하는지 여부는 has() 메서드로 확인할 수 있다. 항목을 추가하는 방법은 키값으로 지정하는 항목에 단순 대입하면 기존에 존재하는 키라면 값을 변경할 것이고 없다면 항목을 추가하게 된다. A["key"] = value 형식으로 사용할 수 도 있지만 A.key = value 형식으로 사용할 수도 있다. A.key에서 key는 자동적으로 ["key"] 형태의 문자열 타입 키로 처리된다.

 

사전 타입 사용 시 주의할 점은 사전은 항상 참조 형태로만 전달 및 공유하므로 새로운 사전 타입을 원한다면 duplicate() 메서드로 새로운 사전을 복제해야만 한다. 또한 for 문으로 사전의 개별 항목을 검색하고 있는 도중에는 개별 항목을 삭제해서는 안된다. 예상치 못한 결과를 초래할 수 있다. 배열과 달리 사전은 사전끼리의 비교를 지원하지 않는다. 이런 경우 hash() 메서드를 이용하여 두 사전 간의 해시를 추출하여 비교하는 것으로 동일 여부를 판단할 수 있다. 다음은 사전 타입의 주요 메서드 목록이다.

 

void clear ( )

    ☞ 모든 항목 지우기
bool erase ( Variant key )
    ☞ 지정한 키값 삭제, 해당 키가 있으면 true

Dictionary duplicate ( bool deep=false )
    ☞ 사전을 복제해서 리턴. deep가 true면 내부 사전이나 배열도 복제, false면 참조로 리턴

 

bool empty ( )
    ☞ 빈 사전이면 true

int size ( )
    ☞ 키의 개수 리턴

bool has ( Variant key )
    ☞ 지정한 키가 있으면 true

bool has_all ( Array keys )
    ☞ 배열로 지정한 모든 키가 있으면 true

 

int hash ( )
    ☞ 32 비트 해시값 리턴

Array keys ( )
    ☞ 사전의 키들을 배열로 리턴

Array values ( )
    ☞ 사전의 값들을 배열로 리턴

Variant get ( Variant key, Variant default=null )

    ☞ 지정한 키가 존재하면 해당 값을, 없으면 default 값을 리턴

 

728x90
댓글
글 보관함
최근에 올라온 글
최근에 달린 댓글
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31