반응형

좀 의아해 할 수 있습니다만, 다음의 예를 살펴보죠.

 

t = { [function(x) print(x) end] = "foo" }
for key,value in pairs(t) do key(value) end


 

위에서 보면 t 라는 테이블은 function(x) print(x) end 라는 함수 즉  x 를 인수로 받아 이를 consol 에 출력하는 함수 입니다.

이 함수 자체가 키가 됩니다. 그러면서 이 키에 설정된 값이 "foo" 입니다.

 

그러면 for 문에 의해서

 

일단

 

key,value in pairs(t)

 

에 의하여 테이블 t 에 있는 key 와 value 를 가져오게 되겠죠.

여기서 key 는 결국 앞어서 말한 함수가 됩니다. 그리고 value 는 "foo" 라는 값이 되겠죠.

 

do key(value)

 

에 의하여 결국 key 라는 함수 , 즉 앞에 키로 넣은 함수 에 value 를 인수로 호출한 것이 됩니다.

 

function(value) 이렇게 되겠죠.

 

결국 value 가 화면에 찍히게 됩니다.

 

과연 이런것을 어디에 사용할 까요?

 

다수의 값이 있고 그 값을 처리하는 함수가 각각 따로 있다고 생각해보죠.

이들을 하나의 테이블에 보관하여 관리할 수가 있겠죠.

 

이런정도의 용도,, 약간의 OOP 적인 성격을 갖는 용도로 활용할 수 있지 않을까 합니다.

+ Recent posts