为什么Lua模块会将其表的 __index 设置为自身?

我注意到一个Lua模块将返回的表的 __index 设置为自身

local M = {
  _VERSION = "1.0.0"
}
M.__index = M

function M.do()
end

return M

设置表的 __index 作为自身的目的是什么?

以后,您将使用该模块

local m = require("m")
m.do()
点赞
用户107090
用户107090

通常这样做是为了避免创建一个单独的metatable来在库中创建的对象中使用:

function M.new()
    return setmetatable({},M)
end

我经常在我的库中这样做。这有点懒。

2018-09-06 15:23:02