앞에서 기초적인 루아 함수의 개념을 정리했다면, 이번에는 그 양념을 한번 제대로 활용해 보는 것에 중점을 둔 정리를 한다.
"루아 함수는 적당한 정적 범위 지정(lexical scoping) 기능을 가진 일등급(first class) 값" 이다. 즉, 문자열이나 수치와 같은 동일한 권한을 가진 변수라는 것이다.
함수를 인수로 넘기거나, 함수를 태이블에 저장하거나 전역 변수에 저장하거나 다 가능하다는 뜻이기도 하다. 책에서는 이를 통해 루아의 막강하고 심플한 모습을 볼 수 있다고 하니까 꼭 짚고 넘어가려고 한다.
루아의 특징을 이용한다면, 당연하겠지만, 함수를 변수에 담아 둘 수가 있다. a = print 라고 하면 a("우하하하") 가 가능하다. 이 특징을 유심히 본다면, function foo( x ) return 2 * x end 에서 foo가 이 함수를 가리키는 변수 라는 것을 알 수 있을 것이다. 즉, foo 가 변수라면 function () end 가 바로 함수의 생성자이라는 것을 눈치 챌 수 있을 것이다.( 난 눈치 못챘다..)
function() end 를 함수의 생성자라고 하기도 하고, 익명 함수 라고 하기도 한다. 익명 함수는 경우에 따라 아주 유용하게 사용 될 수 있는데, 다음 예제 코드를 보도록 하자.
table.sort 는 테이블을 정렬하는 함수인데, 보면 알 수 있듯이, 테이블을 정렬하는 기준 함수를 인자로 전달하고 있다. 쉽고 간단하게 함수를 만들고자 할 때, 이 방법은 이처럼 아주 유용하게 쓰인다. 이것만 보고, 루아의 막강함을 느끼기엔 부족할 것이다. C 에선 이미 있는 기능이기 때문이다.
다음에 나올 막강하리 만큼 아름다운 루아의 고급 함수 활용편을 더 정리해보자.
관련링크
총평
루아의 함수를 변수로 봐야 한다는 것이 조금 생소하긴 했어도, C와 비슷한 점이 있다는 것에 위안을 삼는다. 왜냐하면 보기가 편하기 때문이다. 하지만, 다른 점이 더 많으니 착각하지 말아야 겠다. 루아에서 가장 신기한것은 아마도 테이블 이지 않을까 싶다. .. 동적 타입은 php 를 사용해본 나로써는 그다지 신기한것은 아니지만, 테이블은 참 오묘하다. 이 테이블에 함수를 넣어 두면 재미있을 것 같기도 하다. :)
'책 정리 > Programming in Lua' 카테고리의 다른 글
루아(Lua), 일반 for문 보충 개념 잡기 ( 무상태 반복자 : Stateless Iterators ) 편 (0) | 2008.12.17 |
---|---|
루아(Lua), 반복자와 일반 for문 ( 반복자와 클로저 : Iterators and the Generic for ) 편 (2) | 2008.12.14 |
루아(Lua), 함수 양념 고급 활용 하기 ( 함수 꼬리 호출 : Proper Tail Calls ) 편 (0) | 2008.12.14 |
루아(Lua), 함수 양념 고급 활용 하기 ( 비전역 함수: Non-Global Functions ) 편 (0) | 2008.12.14 |
루아(Lua), 함수 양념 고급 활용 하기 ( 클로저 : Closures ) 편 (0) | 2008.12.14 |
루아(Lua), 함수 개념 양념 뿌리기 ( 이름 있는 인수 편 : Named Arguments ) (0) | 2008.12.14 |
루아(Lua), 함수 개념 양념 뿌리기 ( 가변 개수 인수 편 : Variable Number of Arguments ) (0) | 2008.12.14 |
루아(Lua), 함수 개념 양념 뿌리기 ( 다중 반환 편 ) (0) | 2008.12.13 |
루아(Lua), 함수 개념 양념 뿌리기 ( 기본 ) (0) | 2008.12.13 |
루아(Lua), 문장 개념 먹기 (0) | 2008.12.03 |
최근댓글