IlliumOld
@IlliumOld

Может ли if в lua проверять наличие элементов в массиве?

Добрый день, господа.
Может ли if в lua проверять, существуют в объявленном массиве значения? Иначе говоря, эквивалентен ли код:
local currentTable = {}
if currentTable then

Вот этому коду:
local currentTable = {}
if #currentTable ~= 0 then

И какой вариант сравнения быстрее?

UPD. Кроме того, второй вариант не будет работать корректно, если элементы в таблице не представлены последовательно. А как в этом же случае будет работать первый вариант?
  • Вопрос задан
  • 819 просмотров
Решения вопроса 1
IlliumOld
@IlliumOld Автор вопроса
Не эквивалентен. Код ниже проверит - существует ли currentTable. if лишён смысла, потому что currentTable объявлен и существует:
local currentTable = {}
if currentTable then

Код ниже пройдёт элементы currentTable по порядку и посчитает их количество.
local currentTable = {}
if #currentTable ~= 0 then

В случае:
local a = "name"
local currentTable = {a="eman"}
if #currentTable ~= 0 then

if снова лишён смысла, потому что первым элементом таблицы currentTable будет элемент name в значении "eman". Считать нечего, счётчик элементов #currentTable покажет 0, потому что currentTable[1] = nil.

Проверку реализовал так:
function IsEmpty(t)
    if not t then
        return true
    end
    for _, _ in pairs(t) do
        return false
    end
    return true
end
local currentTable = {}
if not IsEmpty(currentTable) then
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы