Предполагая, что есть момент, когда ваш код может возиться с метатабельным _G
сам, после того, как библиотеки взломали, чтобы исправить то, что сделали L и M, вы можете просто вставить свой собственный метатаблицу, которая выполняет комбинированный поиск,Например:
combined_metatable = {
__index = function (t, k)
return mL.__index (t, k) or mM.__index (t, k)
end
}
setmetatable (_G, combined_metatable)
Преимущество заключается в том, что вы не можете играть с mL
или mM
.
Если у вас нет , есть возможность исправитьпосле факта, вы можете просто изменить __index
записи метатаблиц библиотеки для выполнения комбинированного поиска:
local original_mM_index = mM.__index
local original_mL_index = mL.__index
local function L_then_M_index (t, k)
return original_mL_index (t, k) or original_mM_index (t, k)
end
mL.__index = L_then_M_index
mM.__index = L_then_M_index
[Обратите внимание, что при изменении обеих метатаблиц библиотеки это будет работать в зависимости от того, что будет установлено последним(«Победа» в конкурсе).]