반응형

Mixed table constructor , 즉 혼합형 테이블 이라 할 수 있습니다.

말로는 이해가 어렵습니다.

 

우리는 table을 이용해서 dictionary 를 구성할 수 있음을 알았습니다. dictionary 에는 키가 있고 그 키에 저장되는 값이 있습니다.

 

table.key = 값

일반적으로 dictionary 는 키의 자료형태, 즉 데이터 타입이 같은 형태(정수면 정수, 문자열이면 문자열 등등)를 사용합니다.

그러나 루아의 table은 이러한 키의 형태가 같지 않아도 됩니다.

또한 순차적이지 않아도 됩니다.

 

다음의 예를 살펴보독 하죠.

 

t = { 2,4,6, language="Lua", version="5.1" }
for k,v in pairs(t) do print(k,v) end

for i,v in ipairs(t) do print(i,v) end

결과는

1 2
2 4
3 6
language Lua
version 5.1


1 2
2 4
3 6

 

위에서
앞의 for 문에 의해서는 정수로 인덱스(순차적)된 내용과 language, version 으로 명명된 키의 값들도 나옵니다.

그러나 뒤의 for 문에 의해서는 정수로 인덱스된 순차적인 것들만 나옵니다.

이는 pairs() 와 ipairs 의 차이에 의해서 발생하는 결과 입니다. 이 두가지의 차이는 추후 다시 설명하기로 하고

일단 여기서는 하나의 table에 서로 다른 형태의 순차적이지 않은 값들을 동시에 사용할 수 있다는 것 입니다.

c 나 c++ 프로그램을 하다보면, 가끔 위의 형태를 만들기 위하여 노력할 때가 있습니다.

즉 어떠한 데이터 집단을 만들고 그 데이터 집단의 이름과 특징들을 적어놓을 공간을 만들기 위하여 구조체나 class 의

구조화된 형태를 다소 복잡하게 만들어 사용하게 됩니다.

 

이런 경우 루아의 table은 쉽게 그 형태를 구성하도록 해 줍니다.

+ Recent posts