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