Читлист Defold/Lua

Буду периодически дополнять этот список:

Подсчитать элементы в таблице:

-- Подсчитать элементы в таблице
local function count_table(t)
	local count = 0
	for _ in pairs(t) do count = count + 1 end
	return count
end

Линейный поиск в списке:

-- Проверить, жив ли враг
local function is_enemy_alive(self, enemy_id)
	if not self.active_enemies then
		return false
	end
	for _, active_id in ipairs(self.active_enemies) do
		if active_id == enemy_id then
			return true
		end
	end
	return false
end

Подсчёт длины непрерывного массива. Останавливается на первом nil:

local enemies = {{hp=100}, {hp=50}, {hp=75}}
print(#enemies)  -- 3

local broken = {10, 20, nil, 40}
print(#broken)   -- 2 (останавливается на nil)

table.maxn(t) — максимальный числовой индекс. Игнорирует nil, работает с “дырками”

local sparse = {[1]="forest", [5]="desert", [10]="space"}
print(table.maxn(sparse))  -- 10 (самый большой индекс)

local with_nil = {10, nil, 30, nil, 50}
print(table.maxn(with_nil)) -- 5 (игнорирует nil)

Чтобы узнать количество элементов в таблице, достаточно использовать функцию table.maxn(table). Функция выводит номер последнего элемента в таблице, что также является количеством элементов в таблице

1 Like