Table
Функции для работы с таблицами.
Функции
Обратите внимание: таблицы в Lua передются по ссылке, часть функций изменит таблицу.
table.reverse()
Переворачивает таблицу.
Пример
t = {1, 2, 3, 4, 5};
l.dump(table.reverse(t));
--[[ (table)table: 0020BE30 {
[1] => (number)5
[2] => (number)4
[3] => (number)3
[4] => (number)2
[5] => (number)1
} ]]
table.slice()
Обрезает таблицу до указанной длины.
Пример
t1 = {1, 2, 3, 4, 5};
t2 = {1, 2, 3, 4, 5};
t3 = {1, 2, 3, 4, 5};
l.dump(table.slice(t1, 2));
--[[ (table)table: 00298440 {
[2] => (number)2
[3] => (number)3
[4] => (number)4
[5] => (number)5
} ]]
l.dump(table.slice(t2, -2));
--[[ (table)table: 00298418 {
[4] => (number)4
[5] => (number)5
} ]]
l.dump(table.slice(t4, 2, -1));
--[[ (table)table: 0056BF48 {
[2] => (number)2
[3] => (number)3
[4] => (number)4
[5] => (number)5
} ]]
table.merge()
Объединяет таблицы.
Пример
t1 = {1, 2};
t2 = {3, 4};
t3 = {5};
l.dump(table.merge(t1, t2, t3));
--[[ (table)table: 001EBE30 {
[1] => (number)1
[2] => (number)2
[3] => (number)3
[4] => (number)4
[5] => (number)5
} ]]
table.dump()
Показывает содержание таблицы.
Пример
t = {1, 2, 3, 4, 5};
print(table.dump(t));
--[[ table: 006EBE30 {
[1] => (number)1
[2] => (number)2
[3] => (number)3
[4] => (number)4
[5] => (number)5
} ]]
table.keys()
Возвращает ключи таблицы.
Пример
t = {a = 1, b = 2, c = 3};
l.dump(table.keys(t));
--[[ (table)table: 0033BF48 {
[1] => (string)a
[2] => (string)c
[3] => (string)b
} ]]
table.values()
Возвращает значения таблицы.
Пример
t = {a = 1, b = 2, c = 3};
l.dump(table.values(t));
--[[ (table)table: 003FBF48 {
[1] => (number)1
[2] => (number)3
[3] => (number)2
} ]]
table.copy()
Копирует таблицу.
Пример
t1 = {1, 2, 3, 4, 5};
t2 = table.copy(t1);
t1[3] = nil;
l.dump(t1, t2);
--[[ (table)table: 0032BF48 {
[1] => (number)1
[2] => (number)2
[4] => (number)4
[5] => (number)5
}
(table)table: 0032BE30 {
[1] => (number)1
[2] => (number)2
[3] => (number)3
[4] => (number)4
[5] => (number)5
} ]]
table.map()
Применяет функцию к каждому значению таблицы.
Пример
t = {1, 2, 3, 4, {10, 20}, 5};
function func(v, k)
print(k, '=>', v);
end;
table.map(t, func);
--[[
1 => 1
2 => 2
3 => 3
4 => 4
5 => table: 0044B7F8
6 => 5
]]
table.map(t, func, true);
--[[
1 => 1
2 => 2
3 => 3
4 => 4
1 => 10
2 => 20
6 => 5
]]
table.find()
Ищет значение в таблице и в случае удачи возвращает ключ.
Пример
t = {1, 2, 3, 1, 2, 3};
-- 3
print(table.find(t, 3));
-- 6
print(table.find(t, 3, 4));
table.first()
Возвращает первый элемент таблицы.
Пример
t = {1, 2, 3, 4, 5};
-- 1
print(table.first(t));
table.last()
Возвращает последний элемент таблицы.
Пример
t = {1, 2, 3, 4, 5};
-- 5
print(table.last(t));
table.size()
Возвращает размер таблицы.
Пример
t = {1, 2, 3, a = 10, 4, 5};
-- 5
print(#t);
-- 6
print(table.size(t));
table.shift()
Выталкивает первый элемент таблицы.
Пример
t = {'a', 'b', 'c', 'd'};
-- (string)a
l.dump(table.shift(t));
l.dump(t);
--[[
(table)table: 0044E570 {
[2] => (string)b
[3] => (string)c
[4] => (string)d
}
]]
table.pop()
Выталкивает последний элемент таблицы.
Пример
t = {'a', 'b', 'c', 'd'};
-- (string)d
l.dump(table.pop(t));
l.dump(t);
--[[
(table)table: 0044E570 {
[1] => (string)a
[2] => (string)b
[3] => (string)c
}
]]
table.uniq()
Очищает таблицу от дублей.
Пример
t = {'a', 'b', 'c', 'd', 'a', 'b', 'c', 'd', 'a', 'b', 'c', 'd'};
l.dump(table.uniq(t));
--[[
(table)table: 0044F5E8 {
[1] => (string)a
[2] => (string)b
[3] => (string)c
[4] => (string)d
}
]]