lua解释器,需要导入文件两次才能完全实现功能。

我有一个类似于这个的 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

方法在第二次导入文件时有效,但第一次不起作用。为什么会这样呢? 我已经尝试过更改顺序(将构造函数放在最后),结果仍然相同。

点赞
用户107090
用户107090

第一次使用 x 时它为 nil。需要定义并且第二次使用它。

你需要写成 x = {}; x.__index = x

2013-10-11 00:02:28