Дополнительные действия
DarkMuse (обсуждение | вклад) Новая страница: «local Class = require('Module:Class') local String = require('Module:StringUtils') local Table = {} ---Randomize the order of elements in the table ---@deprecated Use Array.randomize ---@param tbl table ---@return table function Table.randomize(tbl) return require('Module:Array').randomize(tbl) end ---Get the number of elements in a table ---@param tbl table ---@return integer function Table.size(tbl) local count = 0 for _ in pairs(tbl) do...» |
(нет различий)
|
Версия от 19:38, 3 сентября 2024
Стандартная библиотека для работы с таблицами в Lua. Для массивов смотрите Module:Array.
API
-
Программное имя: Table
Возвращает поверхностную копию таблицы
Возвращает глубокую копию таблицы
Фильтрует таблицу с использованием заданной функции предиката, с необязательным вторым аргументом
Возвращает true, если таблица содержит указанный элемент
Возвращает true, если таблица пуста
Перемешивает элементы таблицы на месте с использованием алгоритма Фишера-Йетса
Возвращает количество элементов в таблице
Возвращает уникальный ключ в таблице. Возвращает nil, если таблица пуста или имеет несколько ключей.
Итерирует по таблице в отсортированном порядке
Итерирует по таблице по принципу forEach
Итерирует по таблице с индексацией
Итерирует по таблице по принципу forEachPair
Копирует элементы из второй таблицы в первую, переопределяя существующие элементы. Первая таблица изменяется в процессе. (Можно вызвать с более чем двумя таблицами. Дополнительные таблицы объединяются в первую таблицу поочередно.)
Создает таблицу с объединенными записями из входных таблиц, приоритет отдается записям из последующих таблиц. Входные таблицы не изменяются.
Применяет функцию к каждой записи в таблице и размещает результаты в новой таблице.
Применяет функцию к каждому значению в таблице и размещает результаты в новой таблице под теми же ключами.
Удаляет ключ из таблицы и возвращает его значение.
Возвращает значение по указанному пути во вложенной таблице. Путь указывается массивом.
Возвращает значение по указанному пути во вложенной таблице, или nil, если доступ невозможен. Путь указывается массивом.
Устанавливает значение по указанному пути во вложенной таблице. Путь указывается массивом.
Возвращает true, если хотя бы одна запись в таблице удовлетворяет предикату.
Возвращает true, если все записи в таблице удовлетворяют предикату.
Полифил для функции table.pack в Lua 5.2
Извлекает ключи с префиксами и числовыми индексами из таблицы аргументов и применяет преобразование к каждому ключу или индексу
Извлекает ключи на основе переданной функции `indexFromKey` с числовыми индексами из таблицы аргументов и применяет преобразование к каждому ключу или индексу
Посмотрите всю нашу документацию iCCup здесь.
local Class = require('Module:Class')
local String = require('Module:StringUtils')
local Table = {}
---Randomize the order of elements in the table
---@deprecated Use Array.randomize
---@param tbl table
---@return table
function Table.randomize(tbl)
return require('Module:Array').randomize(tbl)
end
---Get the number of elements in a table
---@param tbl table
---@return integer
function Table.size(tbl)
local count = 0
for _ in pairs(tbl) do
count = count + 1
end
return count
end
---Check if a table includes a value
---@param tbl table
---@param value any
---@param isPattern boolean?
---@return boolean
function Table.includes(tbl, value, isPattern)
for _, v in pairs(tbl) do
if (isPattern and string.find(v, value)) or (not isPattern and v == value) then
return true
end
end
return false
end
---Filter a table by a predicate function
---@generic K, V
---@param tbl table<K, V>
---@param predicate fun(value: V): boolean
---@return table<K, V>
function Table.filter(tbl, predicate)
local filtered = {}
for k, v in pairs(tbl) do
if predicate(v) then
filtered[k] = v
end
end
return filtered
end
---Check if a table is empty
---@param tbl table?
---@return boolean
function Table.isEmpty(tbl)
return not next(tbl)
end
---Shallow copy a table
---@generic T: table
---@param tbl T
---@return T
function Table.copy(tbl)
local copy = {}
for k, v in pairs(tbl) do
copy[k] = v
end
return copy
end
---Deep copy a table
---@param tbl table
---@param options? {copyMetatable: boolean}
---@return table
function Table.deepCopy(tbl, options)
options = options or {}
local function deepcopy(orig)
local orig_type = type(orig)
local copy
if orig_type == 'table' then
copy = {}
for orig_key, orig_value in next, orig, nil do
copy[deepcopy(orig_key)] = deepcopy(orig_value)
end
if options.copyMetatable then
setmetatable(copy, deepcopy(getmetatable(orig)))
end
else
copy = orig
end
return copy
end
return deepcopy(tbl)
end
---Merge two or more tables
---@param target table
---@param ... table
---@return table
function Table.merge(target, ...)
for _, tbl in ipairs({...}) do
for k, v in pairs(tbl) do
target[k] = v
end
end
return target
end
return Class.export(Table)