2014-05-23 2 views
1

나는라는 모듈은 "MyClass.lua는"그것은이 포함되어있다루아 모듈에서 클래스를 선언하고 그것을 인스턴스화

local c = require "MyClass" 
local t = c.new() 

이 경우 오류가 발생합니다. setmetatable에 대해 불평하고 있습니다.

<snip>\MyClass.lua:6: bad argument #2 to 'setmetatable' (nil or table expected) 

은 내가 setmetatable가하는 일, self의 범위 및 __index의 역할에 대한 혼란 스러워요 생각합니다.

답변

3

OOP의 스타일을 사용할 때 self 매개 변수는 암시입니다 .. 당신은뿐만 아니라 다음과 같이 호출해야합니다

local t = c:new() 
--  ^
+0

내가 당신을 사용하는 경우가 암시되고 무슨 뜻인지 이해가 잘 모르겠어요 OOP 스타일. – 010110110101

+0

@ 010110110101 [PiL] (http://www.lua.org/pil/16.html)을 읽으십시오. –

관련 문제