Перейти к содержимому

Переменные и имена

Переменную не объявляют — её просто называют. Разбираемся, какие имена свободны, а какие уже заняты

В mlog нет строки «завести переменную». Переменная появляется в тот момент, когда её имя впервые встретилось в программе — хоть в поле, куда пишут, хоть в поле, откуда читают.

Из этого следует всё остальное в этом уроке.

Не строке, не куску программы, не инструкции — процессору целиком. Любая строка видит все переменные, областей видимости в mlog нет вовсе.

Поэтому имена приходится придумывать осмысленные: через полсотни строк x из начала программы всё ещё будет тем же x.

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

запас и Запас — две разные переменные. Никакого сравнения «без учёта регистра» в mlog нет.

тик 0
Установить0
=
Установить1
=
Операция2
=
Установить3
=
@counter0number
запасnullnull
Запасnullnull
итогnullnull

Нажмите «шаг» четыре раза. В таблице окажутся обе переменные — 100 и 5, — а итог станет равен 105. Программа не считает это ошибкой и не предупреждает: предупреждать в mlog нечем.

Отсюда простое правило: выберите себе один способ писать имена и держитесь его. Русские буквы в именах работают наравне с латинскими — игра хранит программу текстом в UTF-8.

Поле блока — не текстовый редактор: часть символов игра заменяет прямо при вводе, чтобы имя не сломало запись программы.

Что вписали Что получится
пробел, табуляция, # _
; s
" '

Так мой запас превращается в мой_запас сам собой. Это не придирка редактора: программа хранится текстом, строки в ней разделены переводом строки, а # начинает комментарий — пробел внутри имени сделал бы из одной переменной две.

Имя, начинающееся с собаки, принадлежит игре: @copper — это предмет, @time — время, @thisx — координата процессора. Такие имена только для чтения: присваивание в них проходит мимо, молча и без последствий.

Четвёртая строка примера — set @copper 7. Она ничего не делает, и в таблице переменных @copper не появляется вовсе: константы туда не попадают.

Заняты и три имени без собаки: true, false и null. Это тоже константы — 1, 0 и пустота, — и записать в них нельзя ровно так же.

Предела нет: сколько имён встретилось в программе, столько и будет. Ограничена сама программа — 1000 инструкций, и на этом пределе кнопки добавления строки гаснут.

Неофициальный проект, с Anuke не связан. Спрайты, шрифты и переводы Mindustry © Anuke, используются по GPL-3.0; Fira Code — по OFL-1.1. Код сайта — GPL-3.0.