2014-10-18 1 views
1

루아에 대한 시스템을 만들고 있으므로 클래스와 객체를 가질 수 있습니다. 개체를 아래쪽으로 만들었습니다. 문제는 생성자를 만드는 것입니다.루아에서 객체 사용하기

나는 다음과 같은 생성자를 가지고 :

a = MyClass:Create("Hello World!") 

작성 방법은있다 ... 그것은 생성자 메서드 (ONSTART)에 전달 인자로. Create 메서드에서 인수를 읽을 수 있지만 OnStart가 호출되면 인수가 어떻게 든 "Hello World!"대신 nil이됩니다.

내 코드 :

Object = { } 

function Object:Create(...) 
    local instance = { } 
    setmetatable(instance, self) 
    self.__index = self 
    instance.Type = Object 

    -- Now we can call the constructor. 
    local arg = { ... } 
    instance.OnStart(table.unpack(arg)) 

    return instance 
end 

function Object:OnStart(msg) 
    print(msg) 
end 

test = Object:Create("Hello World!") 
print(test:ToString()) 

여기에 MSG 인수가되는 무기 호를 종료하는 방법을 일부 ...

나는 그것이 작동하지 않는 이유를 찾은 것 같다

답변

1

, 약간의 세부 사항 필요가있다 변경하는 것은 9 행 1 행입니다. instance.OnStart 대신 instance:OnStart이 필요합니다.