Table
Table модуль для API компьютера!
Функции
merge
sm.scrapcomputers.table.merge( tbl1, tbl2, fullOverwrite )
Совмещает 2 таблицы в 1.
Порядок, в котором вы размещаете таблицы в sm.scrapcomputers.table.merge, имеет значение! tbl2
переопределит/перезапишет все, что находится внутри tbl1
!
Аргументы:
- tbl1 [ table ] Первая таблица.
- tbl2 [ table ] Вторая таблица.
- fullOverwrite [ boolean? ] Это приведет к тому, что объединенное значение всегда будет из таблицы 2. Не будет заботиться ни о чем другом. По умолчанию установлено
false
.
Возвращает:
- tbl [ table ] Совмещённая таблица.
clone
sm.scrapcomputers.table.clone( tbl )
Копирует таблицу.
Эта функция на самом деле не обязательно должна существовать
Эта функция совершенно не нужна, но в НЕКОТОРЫХ ситуациях полезна. Она создает новую таблицу, но её настолько легко реализовать, что я не думаю, что она заслуживает того, чтобы иметь свою функцию.
Почему бы и нет
Нажмите на этот раскрывающийся список, чтобы понять, почему это несправедливо.
Это весь код, который использует функция...
---Копирует таблицу
---@param tbl table Таблица для копирования
---@return table clonedTable Скопированная таблица
sm.scrapcomputers.table.clone = function (tbl)
assert(type(tbl) == "table", "Expected table, got "..type(tbl).." instead.") -- Отслеживание ошибки
return unpack({tbl})
end
Слишком мало кода! Я мог бы сделать это по-другому, но у других методов есть свои недостатки! Итак, это самое простое, что я могу сделать.
Аргументы:
- tbl [ table ] Таблица для копирования.
Возвращает:
- [ table ] Скопированная таблица.
getItemAt
sm.scrapcomputers.table.getItemAt( tbl, index )
Получает элемент из таблицы через индекс. В отличие от tbl[index]
. Это не будет иметь значения, если номера индексов не в порядке.
-- Это наши актуальные задачи
local todo = {
[25] = "Добавить поддержку стекла для камеры"
[69] = "Добавить параметр для динамиков. Позволяет добавлять, например \"wind\" параметр к звуку"
[4825] = "Добавить дисплеи 512x512 и 1024x1024 для 3x3, 2x2 и 1x1 (я собираюсь добавить это несмотря ни на что :) )"
}
local lastTodoGood = sm.scrapcomputers.table.getItemAt(todo, 3) -- Работает! Возвращает элемент с индексом 4825. Так как это третий элемент в таблице
local lastTodoBad = todo[3] -- Не работает! Пытается получить элемент с индексом 3, но его не существует! так это nil!
print("lastTodoGood: "..tostring(lastTodoGood))
print("lastTodoBad: " ..tostring(lastTodoBad ))
Вы видите, что tbl[index] выдаст ошибку, но не sm.scrapcomputers.table.getItemAt.
Аргументы:
- tbl [ table ] Таблица.
- index [ integer ] Индекс объекта для получения.
Возвращает:
- [ any ] Любую информацию, полученную по этому индексу в таблице.
getTotalItems
sm.scrapcomputers.table.getTotalItems( tbl )
Получает все элементы через цикл ipairs.
В отличие от #tbl, если индексация была странной, #tbl вернет 0. Эту функцию не волнует, является ли система индексации странной. Даст тот же результат, как если бы система индексации была нормальной.
Для словарей используйте sm.scrapcomputers.table.getTotalItemsDict.
Аргументы:
- tbl [ table ] Таблица.
Возвращает:
- [ integer ] Количество элементов в таблице.
getTotalItemsDict
sm.scrapcomputers.table.getTotalItemsDict( tbl )
Получает все элементы с помощью цикла pairs. Это используется для словарей. в противном случае используйте sm.scrapcomputers.table.getTotalItems.
В отличие от #tbl, если индексация была с транной, #tbl вернет 0. Эту функцию не волнует, является ли система индексации странной. Даст тот же результат, как если бы система индексации была нормальной.
Аргументы:
- tbl [ table ] Таблица.
Возвращает:
- [ integer ] Количество элементов в таблице.
isDictonary
sm.scrapcomputers.table.isDictonary( tbl )
Возвращает true, если это словарь.
Аргументы:
- tbl [ table ] Таблица для проверки.
Возвращает:
- [ boolean ] true, если это словарь.
itemExistsInList
sm.scrapcomputers.table.itemExistsInList( tbl, item )