Зачем использовать локальные переменные?
Часть раздела Основы путешествия по Lua на Coddy. Урок 85 из 90.
Предотвращение конфликтов имён: Самое важное преимущество локальных переменных заключается в том, что они не позволяют случайно перезаписать другие переменные с таким же именем. Если использовать глобальные переменные во всей программе, легко случайно повторно использовать имя переменной и изменить значение, которое вы не собирались менять.
score = 100 -- очки игрока
function countEnemies()
score = 0 -- предназначена для использования в качестве счётчика только в этой функции
for i = 1, 3 do
score = score + 1
end
return score
end
countEnemies()
print(score) -- 3: очки игрока были перезаписаны!Функция должна была использовать собственный счётчик, но, поскольку score является глобальной переменной, вместо этого она изменила счёт игрока. Добавление local создаёт для функции отдельную переменную, существующую только внутри неё:
function countEnemies()
local score = 0 -- новая переменная, доступная только внутри этой функции
for i = 1, 3 do
score = score + 1
end
return score
end
countEnemies()
print(score) -- 100: глобальная переменная score не измениласьС локальными переменными у каждой функции и каждого блока есть собственные отдельные переменные, поэтому код в одном месте не может случайно изменить значения, используемые где-то ещё.
Попробуйте сами
В этом уроке нет задания по программированию.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы 2: Сравнение и логика
Операторы равенстваОператоры сравненияОператор 'and'Оператор 'or'Оператор 'not'Сокращенные вычисленияЗначения Truthy и FalsyИтоги: Простая логика7Основы условной логики
Оператор if-thenОператор if-then-elseОператор elseifИтоги — Сундук с сокровищами10Таблицы, часть 1: Списки
Что такое таблица?Создание таблицыДоступ к элементам по индексуИзменение элементов по индексуОператор длины '#'table.insert()table.remove()Итоги: управление участниками группы13Проект: Простой магазин зелий
Настройка проектаДобавление зелья2Переменные и типы данных
Что такое переменная?ЧислаСтрокиБулевы значенияЗначение 'nil'Функция type()Правила именованияИтоги — Профиль персонажа5Базовый вывод
Вывод литераловВывод переменныхВывод нескольких значенийОбъединение строк и переменныхФункция tostring()ВводПриведение типовПовторение — Отчет о состоянииПовторение — До 1208Основы работы со строками
string.len()string.upper и string.lowerstring.sub()string.rep()string.find()Повторение — Форматирование имени пользователя11Таблицы 2: Словарный стиль
Пары ключ-значениеСоздание таблиц-словарейДоступ: квадратные скобкиДоступ через точечную нотациюДобавление и изменение парУдаление пар с помощью nilИтоги: свойства элементов14Область видимости переменных
Глобальные переменныеЛокальные переменныеЗачем использовать локальные переменные?Область видимости и блокиПовторение — Головоломка на область видимости3Операторы 1: Арифметика и конкатенация
Арифметические операторыОператор остатка от деленияОператор возведения в степеньКонкатенация строкПриоритет операторовПовторение: Простые вычисления6Проект: Вывод характеристик персонажа
Приветственное сообщениеОбъявление характеристик персонажа9Основы функций
Объявление функцииВызов функцииФункции с параметрамиФункции с несколькими параметрамиОператор 'return'Повторение — Калькулятор площадиПотренируйтесь самостоятельно: Онлайн-компилятор Lua