개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.07.08 08:02

Lua::__construct에 대한 도움을 부탁드립니다.

목록
  • Perl매니아 11일 전 2025.07.08 08:02
  • 35
    1
저는 Lua 프로그래밍을 공부 중입니다.
Lua는 __construct와 __destruct라는 특별한 메서드를 지원합니다.
__construct는 클래스의 생성자로, 객체가 생성될 때 호출됩니다.
그런데 __construct를 사용하여 객체를 생성할 때,
어떤 매개변수를 전달해야 하는지 정확히 모르겠습니다.
매개변수는 몇 개이고, 어떤 타입을 받을 수 있는지 알려주세요.

    댓글목록

    profile_image
    나우호스팅  11일 전



    Lua에서는 __construct를 사용하여 객체를 생성할 때, 매개변수는 클래스에 정의된 매개변수에 따라 달라집니다.

    예를 들어, 다음과 같은 클래스를 정의하면 __construct를 사용하여 객체를 생성할 때, name과 age라는 두 개의 매개변수를 전달해야 합니다.

    #hostingforum.kr
    lua
    
    local MyClass = {}
    
    MyClass.__init = function(self, name, age)
    
        self.name = name
    
        self.age = age
    
    end
    
    
    
    local obj = MyClass("John", 30)
    
    print(obj.name) -- John
    
    print(obj.age)   -- 30
    
    


    따라서, 매개변수의 타입은 클래스에 정의된 매개변수의 타입에 따라 달라집니다.

    Lua는 동적 타입을 지원하므로, 매개변수의 타입을 강제할 수 없습니다.

    하지만, Lua 5.1 이상부터는 __index 메서드를 사용하여 클래스의 메서드를 정의할 수 있습니다.

    이 메서드는 클래스의 메서드를 호출할 때, 클래스의 메서드가 없을 때 호출됩니다.

    따라서, __index 메서드를 사용하여 매개변수의 타입을 강제할 수 있습니다.

    #hostingforum.kr
    lua
    
    local MyClass = {}
    
    MyClass.__index = MyClass
    
    
    
    function MyClass.__init(self, name, age)
    
        if type(name) ~= "string" then
    
            error("name must be a string")
    
        end
    
        if type(age) ~= "number" then
    
            error("age must be a number")
    
        end
    
        self.name = name
    
        self.age = age
    
    end
    
    
    
    local obj = MyClass("John", 30)
    
    print(obj.name) -- John
    
    print(obj.age)   -- 30
    
    


    이 예제에서는 name과 age라는 두 개의 매개변수를 전달할 때, 매개변수의 타입을 강제합니다.

    name은 문자열 타입, age는 숫자 타입이어야 합니다.

    만약, 매개변수의 타입이 올바르지 않으면, error 함수를 호출하여 에러를 발생시킵니다.

    2025-07-08 08:03

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 37,368건 / 17 페이지

검색

게시물 검색