lua解释器,必须导入两次文件才能实现全部功能

lua解释器,必须导入两次文件才能实现全部功能,lua,interpreter,metatable,Lua,Interpreter,Metatable,我有一个类似于这样的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 meth

我有一个类似于这样的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
该方法在我第二次导入文件时有效,但在第一次导入文件时无效。为什么会这样?
我尝试过更改顺序(将构造函数放在最后),结果是一样的。

第一次
x
为零。它被定义,然后被第二次使用


您需要编写
x={};x、 如果这个答案解决了你的问题,请接受它。这就是SO的工作原理,有助于保持高质量。这是苏说“谢谢”的方式。