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

Присваивание и копирование

Положить число, текст или содержимое другой переменной — и чем копия отличается от оригинала

set — первая инструкция, которую ставит почти любая программа: прежде чем что-то считать, надо откуда-то взять начальные числа.

Нажмите «шаг» четыре раза и смотрите в таблицу.

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

Число пишется как есть: 5, -0.25, 1e6. Точка, а не запятая; знак минуса прижат к числу.

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

Занятое имя@copper, @this, @time. Это константы игры, о них следующий урок.

Другая переменная — тогда значение копируется. Об этом дальше.

Третья строка примера — set копия запас, и в этот момент в запас лежит пятёрка. Четвёртая меняет запас на 99, но копия остаётся пятёркой.

Это и есть главное правило: копируется значение, а не связь. В mlog нет «ссылки на переменную», нет способа сказать «пусть эта переменная всегда равна той». Каждая строка set — разовое действие: взять то, что лежит справа сейчас, и положить налево.

Значение бывает не только числом. Если в переменной лежит здание или предмет, копируется именно оно: set другой container1 кладёт в другой тот же самый контейнер.

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

  • Считать. set итог запас + 1 записать нельзя: сложение — это op.
  • Писать в занятые имена. set @copper 7 не делает ничего. Единственное исключение — @counter, запись в который означает переход.
  • Заводить переменную заранее. Строки «объявить переменную» в mlog нет: переменная появляется от первого упоминания, и set — просто первое место, где это обычно случается.

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