Programming/LUA
[루아스크립트/프로그래밍]루아(LUA)함수를 테이블 키로 사용한다
Ruthless404
2018. 5. 13. 13:49
반응형
좀 의아해 할 수 있습니다만, 다음의 예를 살펴보죠.
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 적인 성격을 갖는 용도로 활용할 수 있지 않을까 합니다.