Модуль:Специальные утилиты
Материал из Playzone Minecraft Wiki
Версия от 18:39, 21 июля 2016; NickTheRed37 (обсуждение)
Для документации этого модуля может быть создана страница Модуль:Специальные утилиты/doc
local p = {} -- Добавление именованных значений, с обработкой повторяющихся ключей local function tryInsertKey(thetable, key, value, strict) local try = 1 local inserted = false local _key = key repeat if thetable[_key] == nil then table.insert(thetable, _key, value) inserted = true else if strict then error("Ключ " .. key .. " встречается в нескольких таблицах при том, что их обработка здесь была запрещена.") else try = try + 1 _key = key .. try end end until inserted end -- Объединяет несколько таблиц вместе. function p.jointables(tables, strict) local newt = {} if #tables == 1 then return tables[1] elseif #tables == 0 then return {} end if strict == nil then strict = false end for i, t in ipairs(tables) do if type(t) == 'table' then for k, v in pairs(tables) do if type(k) == 'number' then table.insert(newt, v) else tryInsertKey(newt, k, v, strict) end end else error("Среди таблиц обнаружен объект, таблицей не являющейся.") end end return newt end