루아의 함수 개념을 이해하기 위해서 각 항목별로 정리를 했었다. 그 항목별로 읽다가 한개씩 한개씩 중요한 문장이 나오는데, 이번 항목에서는 "루아의 매개변수 전달 방식은 위치를 기반하여 행해진다." 가 중요하다고 생각한다.
루아의 함수시스템을 이해하는데, 위치를 기반으로 행해진다는 것은 C와 C++ 과는 전혀 다른 체계를 따른다는것과 같다. 아마도 동적 타입 때문에 위치로 밖에 할 수 없으니 당연할 지도 모르겠다.
이런 위치기반 인수 전달 방식의 루아 함수에서 "이름"으로 인수를 전달 할 수도 있는데, 그 이야기를 지금부터 하려고 한다.
루아의 table 이라는 자료구조를 이해했다면 다음의 table이 무엇을 나타내는지 쉽게 알 수 있을 것이다.
보면 알겠지만 table.first 와 table.end 로 접근하여 해당 값을 확인 할 수 있을 것이다. 이것이 바로 이름 있는 인수를 전달하는 핵심 원리이다. 함수가 테이블을 매개변수로 받아, 그 테이블의 특정 Key 로 접근하여, 사용 하면 되는 것이다.
이렇게 말만 하면 갸우뚱 거리는게 정상이므로, 다음 코드를 보고 다시 정리해 보자.
이 코드에서 보면 알 수 있듯이, table 을 받아서 print 가 hangle_start 와 hangle_end 를 출력하게 된다. 만약 다른 값을 넣게 되면, 작동하지 않는다.
어디에 쓰일지는 직접 고심해 보는것이 좋을 듯 하기도 하다. 나 같은 경우에는 잘 모르겠다. 책에선 윈도우 띄울때 쓰면 유용할 것이라고 하는데, 아마도 이런 기본값으로 띄울수 있는 함수에서 유용할듯 싶다.
총평
보통 컴퓨터 언어에서 함수가 제일 중요하듯이, 모르겠다 싶으면 되돌아 와서 정리된것을 봐야겠다.
관련 링크
'책 정리 > Programming in Lua' 카테고리의 다른 글
루아(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), 함수 양념 고급 활용 하기 ( 함수 고급 활용 : More about Functions ) (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 |
루아(Lua), 수식 개념 요리 하기 (0) | 2008.12.03 |
최근댓글