[Lua] 유사클래스의 구현

[원본 링크]

루아는 클래스 등의 기능을 직접 제공하진 않는다.

그래도 함수와 테이블을 어떻게 엮어서 클래스 비슷하게 만들순 있다.

전역에 일단 클래스이름에 해당하는 테이블을 만들고, 테이블에 생성자용 함수를 추가한다.
그리고 생성자용 함수 내에서 또 객체 테이블을 생성하고 메서드들을 객체 테이블에 정의-바인딩시킨다.

코드부터 보자. image

image 아마 함수명에 :를 쓰고 self라는 녀석이 툭 튀어나온 것이 낯설 것이다.

일단 ':'도 '.'처럼 테이블에 함수를 바인딩하는건 똑같다. 차이라면 테이블을 self라는 인자로 자동으로 받아준다는 것이 있다.
메서드구현할땐 이렇게 쓰는 것이 좋다.

그리고 호출할때도 .나 :를 구현한 것에 맞춰서 써줘야한다.

정적메서드는 그냥 전역에다 Point.New처럼 구현하면 된다.

클래스라기에 어설픈 점은 많지만, 어떻게든 쓸수있는게 어딘가...


참조
https://ospace.tistory.com/m/246
https://hsg2510.tistory.com/m/173