
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