所以我有一个类似的lua文件:
x = { __index = x}
constructor = function()
local o = {}
return setmetatable(o,x)
end
function x:print()
print("hello world")
end
我在解释器中输入以下内容:
dofile "file.lua"
a = constructor()
a:print() --error attempt to call method 'print' (a nil value)
dofile "file.lua"
a = constructor()
a:print() -- hello world
该方法在我第二次导入文件时有效,但不是第一次。为什么是这样?我试过改变顺序(把构造函数放在最后),结果是一样的。