我有一个名为“MyClass.lua”的模块它包含:
local _S = {}
function _S:new(o)
o = o or {}
setmetatable(o, self)
self.__index = self
return o
end
return _S
在我的主脚本中,我指的是这样的模块:
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
的作用感到困惑。
答案 0 :(得分:3)
self
参数仅在使用OOP样式时隐式。您还需要像这样调用它:
local t = c:new()
-- ^