Освоение Lua: изучение различных методов перебора пар ключ-значение

Lua — мощный язык сценариев, известный своей простотой и универсальностью. Когда дело доходит до перебора пар ключ-значение, часто используемой конструкцией является цикл for in Pairs. В этой статье мы рассмотрим различные методы, позволяющие максимально эффективно использовать этот цикл, предоставив примеры кода и простые для понимания объяснения. Независимо от того, являетесь ли вы новичком Lua или опытным разработчиком, это руководство поможет вам повысить уровень вашей игры на итерациях!

Метод 1: базовая итерация
Самый простой метод — использовать цикл «ключ-значение в парах». Вот пример:

local myTable = {name = "John", age = 25, city = "New York"}
for key, value in pairs(myTable) do
    print(key .. ": " .. value)
end

Этот цикл перебирает каждую пару ключ-значение в таблице и распечатывает их.

Метод 2: фильтрация на основе ключа или значения
Иногда вам может потребоваться отфильтровать пары на основе определенных критериев. Например, предположим, что мы хотим напечатать только пары ключ-значение, где ключ начинается с буквы «а». Вот как этого можно добиться:

local myTable = {apple = "red", banana = "yellow", orange = "orange"}
for key, value in pairs(myTable) do
    if key:sub(1, 1) == "a" then
        print(key .. ": " .. value)
    end
end

В этом примере мы используем функцию string.sub()для извлечения первого символа ключа и проверки, равен ли он «a».

Метод 3: пропуск или разрыв цикла
Иногда вам может потребоваться пропустить или разорвать цикл в зависимости от определенных условий. Вот пример, демонстрирующий, как пропустить печать пар со значением «желтый»:

local myTable = {apple = "red", banana = "yellow", orange = "orange"}
for key, value in pairs(myTable) do
    if value == "yellow" then
        goto continue
    end
    print(key .. ": " .. value)
    ::continue::
end

Инструкция gotoпозволяет нам перейти к определенной метке. В этом случае мы переходим к метке «продолжить», когда значение «желтое», фактически пропуская текущую итерацию.

Метод 4: изменение значений
В некоторых случаях может потребоваться изменить значения во время итерации. Вот пример, демонстрирующий, как использовать все значения в таблице с заглавной буквы:

local myTable = {name = "john", age = 25, city = "new york"}
for key, value in pairs(myTable) do
    myTable[key] = string.upper(value)
end
for key, value in pairs(myTable) do
    print(key .. ": " .. value)
end

В этом примере мы используем функцию string.upper()для преобразования каждого значения в верхний регистр и соответствующего обновления таблицы.