루아 p.13 - 클래스 만들기

루아에는 C언어와 같은 클래스 개념이 없습니다. 하지만, 테이블을 이용하여 비슷한 역할과 기능으로 동작시키는건 가능합니다. 이미 테이블에 관해서 익혀왔다면 어느정도 짐작은 하셨겠지요.

다음의 두 예제를 보면서 구조를 살펴보도록 하겠습니다. 먼저 첫번째 예제는 C언어로 만들어본 클래스이고, 두번째 예제는 루아로 다시 구현해본 예제입니다.

  • C언어

    class MyClass
    {
    private:
        string m_strName;
        int m_nAge;

    public:
        void SetName( string& strName);
        string& GetName();

        void SetAge( int nAge);
        int GetAge();
    };


    void MyClass::SetName( string& strName)
    {
        m_strName = strName;
    }

    string& MyClass::GetName()
    {
        return m_strName;
    }

    void MyClass::SetAge( int nAge)
    {
        m_nAge = nAge;
    }

    int MyClass::GetAge()
    {
        return m_nAge;
    }

  • 루아

    MyClass = {};

    MyClass.m_strName = "";
    MyClass.m_nAge = 0;

    function MyClass:SetName( strName)
        MyClass.m_strName = strName;
    end

    function MyClass:GetName()
        return MyClass.m_strName;
    end

    function MyClass:SetAge( nAge)
        MyClass.m_nAge = nAge;
    end

    function MyClass:GetAge()
        return MyClass.m_nAge;
    end

위처럼 테이블로써 메소드와 변수를 묶으면 객체를 생성하고 관리하기 편하며, 생성한 테이블에 단순히 nil을 입력해주는 것만으로 그 객체를 삭제할 수 있다는 점에서 매우 중요합니다.

댓글 1개:

Unknown :

만든 클래스의 사용은 어떻게 하나요?