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()для преобразования каждого значения в верхний регистр и соответствующего обновления таблицы.