Переменные и имена
Переменную не объявляют — её просто называют. Разбираемся, какие имена свободны, а какие уже заняты
В mlog нет строки «завести переменную». Переменная появляется в тот момент, когда её имя впервые встретилось в программе — хоть в поле, куда пишут, хоть в поле, откуда читают.
Из этого следует всё остальное в этом уроке.
Переменные принадлежат процессору
Заголовок раздела «Переменные принадлежат процессору»Не строке, не куску программы, не инструкции — процессору целиком. Любая строка видит все переменные, областей видимости в mlog нет вовсе.
Поэтому имена приходится придумывать осмысленные: через полсотни строк x из начала
программы всё ещё будет тем же x.
Соседний процессор — это другой набор переменных, даже если имена совпадают. Ничего общего у них нет: чтобы передать значение, нужна память или связь, и об этом отдельные группы уроков.
Регистр важен
Заголовок раздела «Регистр важен»запас и Запас — две разные переменные. Никакого сравнения «без учёта регистра» в mlog нет.
Нажмите «шаг» четыре раза. В таблице окажутся обе переменные — 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.