일단 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
'Programming > LUA' 카테고리의 다른 글
[루아스크립트/프로그래밍]루아(LUA)Table key 에 대한 노트 (0) | 2018.05.11 |
---|---|
[루아스크립트/프로그래밍]루아(LUA)Mixed table constructors (0) | 2018.05.11 |
[루아스크립트/프로그래밍]루아(LUA) 테이블 (1) | 2018.05.07 |
[루아스크립트/프로그래밍]루아(LUA)에서의 main 함수 (1) | 2018.05.07 |
[루아스크립트/프로그래밍]루아(LUA)에서는 함수도 변수 (0) | 2018.05.06 |