
Lua는 객체 지향 프로그래밍을 지원하는 언어가 아니지만, 메타테이블을 사용하여 객체 지향 프로그래밍을 흉내낼 수 있습니다. Lua::__construct는 메타테이블의 __newindex 이벤트를 사용하여 객체를 생성할 때 호출되는 함수입니다.
Lua에서 __construct를 사용하여 객체를 생성하는 방법은 다음과 같습니다.
#hostingforum.kr
lua
function MyClass:__construct()
self.x = 10
self.y = 20
end
function MyClass:print()
print(self.x, self.y)
end
local obj = setmetatable({}, { __index = MyClass })
obj:__construct()
obj:print()
위 코드에서 `setmetatable({}, { __index = MyClass })`를 사용하여 메타테이블을 생성하고, `__index` 이벤트를 설정하여 `MyClass`를 객체의 인덱스로 사용합니다. 그런 다음 `obj:__construct()`를 호출하여 객체를 생성하고, `obj:print()`를 호출하여 객체의 속성을 출력합니다.
이 코드는 다음과 같이 작동합니다.
1. `setmetatable({}, { __index = MyClass })`를 호출하여 메타테이블을 생성하고, `__index` 이벤트를 설정합니다.
2. `obj:__construct()`를 호출하여 객체를 생성합니다. 이때 `self`는 메타테이블을 가리킵니다.
3. `obj:print()`를 호출하여 객체의 속성을 출력합니다. 이때 `self`는 메타테이블을 가리킵니다.
이러한 방법으로 Lua에서 __construct를 사용하여 객체를 생성할 수 있습니다.
2025-05-20 14:47