Почему модуль lua устанавливает __index своей таблицы как сам по себе? - PullRequest
0 голосов
/ 06 сентября 2018

Я заметил, что модуль lua устанавливает __index возвращаемой таблицы в качестве самого себя

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

function M.do()
end

return M

Что делает установка таблицы __index самой по себе?

Позже вы будете использовать модуль

local m = require("m")
m.do()

1 Ответ

0 голосов
/ 06 сентября 2018

Обычно это делается для того, чтобы избежать создания отдельной метатаблицы для использования в объектах, создаваемых библиотекой:

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

Я делаю это все время в моих библиотеках. Это немного лениво.

...