Construct 한국어 위키
Advertisement
발번역된 문서 이 문서는 기계 번역이 의심되거나, 번역자가 대충 번역한 흔적이 남아있습니다.

틀리거나, 잘못 번역되었거나, 한국어에 맞지 않는 내용을 수정해주세요.


Hash Table 객체
Hash table
제작자 Scirra
버전 1.0
라이센스 컨스트럭트 객체
비(非) 레이아웃



해시 테이블(hash table) 객체는 이름있는 키(key)에 값을 저장할 수 있게 해줍니다. 실행 도중에 키를 생성, 변경, 삭제할 수 있습니다. 즉, 해시 테이블은 각 값을 구분하는데에 인덱스 대신 열쇳말(key) 을 사용하는 동적인 일차원 테이블인 셈 입니다. 혹은 실행 도중에 이름있는 변수를 생성 / 삭제할 수 있는 동적인 변수 객체로 볼 수도 있습니다. 참고: 키(key) 는 소문자로 바뀝니다. 예를 들자면, "Health" 라는 열쇳말은 "health" 로 바뀌지만, 그 안에 저장된 값은 영향받지 않습니다.

컨스트럭트 2 에서는 Dictionary 라는 이름의 기본 플러그인으로 있습니다.

속성[]

일반 속성 항목을 확인하세요. 해시 테이블은 비 레이아웃 객체라서 위치나 크기, 각도 같은 속성이 없습니다.

조건(Conditions)[]

For each key (각각의 키마다)
해시 테이블에 있는 각각의 키(key)마다 반복합니다. 현재 키에 대한 정보를 얻으려면 current key, current value, current index 표현을 사용하세요.
Check if key exist (키가 있는지 확인)
키 이름이 해시테이블에 존재하면 참(True)을 반환합니다. (조건이 맞는 걸로 칩니다.)
Is hashtable empty (해시테이블이 비었는지)
주어진 해시테이블에 키가 하나도 없을 경우 참(True).

액션(Actions)[]

Insert key(키 삽입)
주어진 값의 주어진 키를 해시테이블에 넣습니다.
Set key value (키 값 설정)
주어진 키에 값을 대입합니다.
Add to value (값에 더하기)
주어진 키에 값을 더합니다.
Subtract from value (값에서 빼기)
주어진 키에서 값을 뺍니다.
Delete key (키 삭제)
키를 제거합니다.
Delete all keys (전체 키 삭제)
해시 테이블에서 모든 키를 제거합니다. 즉, 효율적으로 해시테이블을 깨끗하게 비웁니다.
Save to file (파일에 저장)
하드디스크의 파일에 해시테이블을 저장합니다.
Load from file (파일에서 불러오기)
하드디스크의 파일에서 해시 테이블을 불러옵니다.
Load from file and append (파일에서 불러와서 덧붙이기)
하드디스크의 파일에서 키들을 읽어 현재 해시 테이블에 합칩니다.

표현 (Expressions)[]

Get number of keys (.KeyCount) (키의 갯수를 가져오기)
주어진 해시테이블에서의 키의 갯수를 반환합니다.
Get current value (.CurrentValue) (현재 값 가져오기)
현재 선택된(picked) 키의 값을 반환합니다.
Get current index (.CurrentIndex) (현재 인덱스 가져오기)
현재 선택된(picked) 키의 인덱스를 반환합니다.
Get current key (.CurrentKey) (현재 키 가져오기)
현재 선택된(picked) 키의 이름을 반환합니다.
Get value at key (객체이름("키이름")) (키의 값 가져오기)
주어진 키의 값을 가져옵니다.

예제[]

이 예제는 해시 테이블이 키, 값의 쌍들을 보관하는데 있어 얼마나 효율적인지를 보여드릴 것입니다. 간단하게 서로 대화하는 게임을 만들 것인데, 이전에 몇 번 대화했는가에 따라 그 내용이 달라지게 할 것입니다. 이 예제에서 다른 객체에 들이받을때 객체의 고유 ID (UID, Unique ID) 를 확인해서, 해시 테이블에 그런 키, 즉 그 객체의 고유 ID 이름의 키가 있는지 확인합니다. 이제 할 일은 그런 이름의 키가 없으면 만들고, 있으면 1씩 증가시킬 겁니다. 그러고 나서, 이 값을 이용해 플레이어의 인삿말을 보여줄 것입니다.

  • 키는 반드시 문자열이어야합니다. 객체의 고유 ID는 숫자라서 안 되지만, 끝에 "s"를 붙여 문자화 시키는 걸로 해결합니다.[1]
  • 위의 방식으로 변환된 해시테이블의 값을 출력할 때 먼저 변수에 대입해야합니다. 왜냐하면 Hashtable() 호출이 UID와 "s" 를 하나로 합치는 걸 지원하지 않기 때... 문 뭐라고? 아니고요, UID가 숫자라서 그렇습니다. str(Sprite2.UID)&"s" 같은 방식으로 합쳐주면 잘 동작합니다. 업데이트되서 그런 듯 하네요. 호출 방식 자체가 옛날 문서와 다릅니다.

컨스트럭트 0.99.42 [2]에서 만들어진 이 예제 파일을 여기서 받으실 수 있습니다.

Hashtable example

해시 테이블에 컨테이너를 적용해서 스프라이트의 인스턴스마다 하나씩 해시 테이블을 가지게 할 수도 있습니다. 링크 (영문)

주석[]

  1. str()으로 문자화시켜도 됩니다.
  2. 아직 "클래식"이 붙기 전
Advertisement