반응형

일단 Dictionary 란 무엇인가를 알아보도록 하죠.

STL 을 아시는 분은 map 같은 것이죠.

 

Java, C# 등에서도 제공 됩니다.

 

언듯 들으면 전자사전? 정도로 생각할 수 있습니다. 의미적으로 비슷합니다.

프로그램을 만드는데 있어서 dictionary 라는것이 무엇인지 알아보도록 하죠.

 

가령 우리가 전국 지역번호(전화의) 를 참조하는 것이 필요하다고 할때,

 

지역번호는 정해져 있습니다. 즉 바뀌기 어렵죠. 다만 그 값을 사용하는것이 매우 빈번 하게 발생 합니다.

즉 어떠한 정보가 있으면 정보의 내용을 갱신하는 빈도와 , 그 정보들중 필요한 것을 찾아 사용하는 것의 방법으로

정보에 접근하는 형태가 나뉘어 집니다.

이는 우리가 영어사전이 그 내용자체는 바뀌는것이 드물며(어떤 정보는 평생 변하지 않을수도 있음) 단지 모르는 영어단어를

찾아보는 경우가 훨씬 많다는 것 입니다.

 

이러한 경우에 우리는 이러한 정보를 위의 사용에 보다 효과적으로 대처할 수 있도록 자료들을 보관하는 방법을 찾습니다.

이러한 경우에 사용하는 방법이 dictionary 입니다. 일종의 자료구조의 하나이지요.

 

루아에서 이러한 dictionary 형태를 table 을 이용하여 만들 수 있습니다.

 

아래의 정보가 있다고 생각해 봅니다.

 

서울 = 02

경기 = 031

인천 = 032

강원 = 033

부산 = 051

충남 = 041

대전 = 042

제주 = 064

 

지역번호는 더 많지만 일단 이것으로...

 

C에서 배열 또는 리스트로 위의 내용을 저장하여

만일 충남의 지역번호는? 이란 질문이 들어올때 배열을 쭉 찾아서 충남이 나올때까지 돌려 해당 값을 찾겠죠.

아니면 STL 의 map 과 같은 형태로 코딩을 할 수 있겠죠?

 

루아에서는 테이블을 이용합니다.

 

ddd = {["서울"]="02", ["경기"]="031", ["인천"]="032", ["강원"]="033", ["부산"]="051", 
      ["충남"]="041", ["대전"]="042", ["제주"]="064" }

 

print(ddd["제주"])
print(ddd["서울"])

 

이렇게 검색할 수 있다는 것 입니다.

 

여기서 table은 table[key] = 값, 형식으로 키로 사용하는 것이 문자열일 수 있고 아니면 멤버 변수일 수 있습니다.

키가 영문자일경우는 [ ] 를 사용하지 않아도 됩니다.

 

 

ddd = {seoul="02"}


print(ddd["seoul"])

 

 

또한 아래와 같이 객체의 접근형태(c 에서의 구조체 연산자)로 접근할 수도 있습니다.

ddd = {seoul="02"}


print(ddd.seoul)

 

위와 같이 table을 이용하여 dictionary 의 구조적 문법을 사용할 수 있습니다.


종합예제:


d = {s="02", k="031", i="032", g="033", b="051", 
c="041", d="042", j="064" }



print(d.c)
print(d.s)

출력값:041
02



+ Recent posts