루아 테이블에서의 저장 영역은 키-값 (key-value)의 쌍으로 이루어 집니다.
루아는 일반적인 배열(array) 과 dictionary 간의 차이점을 갖지 않습니다.
즉 배열과 dictionary 간의 차이를 루아 테이블에서는 볼수 없다는 것이죠.
모든 루아의 테이블들은 실질적으로는 dictionary 와 같이 동작 합니다. 일반적으로 배열에서의 키는 정수이어야 한다는것과도
다르죠.
> t = { 3,6,9 } -- is the same as...
> t = { [1]=3, [2]=6, [3]=9 } -- is the same as...
> t = {} t[1]=3 t[2]=6 t[3]=9
이러한 의미에서 위의 3줄은 모두 같은 내용 입니다.
테이블의 키는 일종의 레퍼런스(reference) 입니다.
a = { [{1,2,3}]="yadda" } -- construct a table where the element has a table key
for k,v in pairs(a) do print(k,v) end -- display the table contents: key-value pairs
print( a[{1,2,3}]) -- display the element value
위와 같은 예제서 결과는
table: 014D9150 yadda
nil
입니다.
k,v in pairs(a) 에서
k 는 테이블 a에 있는 키, v 는 해당 키로 지정된 값 입니다.
또한 a 의 키는 {1,2,3} 이라는 테이블입니다. [] 를 쒸운것은 이 테이블 자체의 주소를 키로 사용한다는 것이죠.
그러므로 k 는 table 이라는 값이 나오는 것이고 그 주소가 나오는 것 입니다.
역시 v 는 해당 키에 대한 값 "yadda" 이죠.
위의 값을 다음과 같이 풀어보죠.
tablekey = {1,2,3} -- create a table with a variable referencing it
a = { [tablekey]="yadda" } -- construct a table using the table as a key
for k,v in pairs(a) do print(k,v) end -- display the table elements
print(a[tablekey]) -- retrieve a value from the table
print(tablekey) -- the table value is the same as the key above
결과는
table: 014D89D0 yadda
yadda
table: 014D89D0
위와 같이 보시면 이해가 좀 쉬우실 겁니다.
'Programming > LUA' 카테고리의 다른 글
[루아스크립트/프로그래밍]루아(LUA)함수를 테이블 키로 사용한다 (0) | 2018.05.13 |
---|---|
[루아스크립트/프로그래밍]루아(LUA)주소로서의 문자열 (0) | 2018.05.13 |
[루아스크립트/프로그래밍]루아(LUA)Mixed table constructors (0) | 2018.05.11 |
[루아스크립트/프로그래밍]루아(LUA)Tables as Dictionaries (0) | 2018.05.11 |
[루아스크립트/프로그래밍]루아(LUA) 테이블 (1) | 2018.05.07 |