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

Число, объект и текст

В переменной либо число, либо объект — и от этого зависит, что с ней можно сделать

просто

В переменной mlog лежит либо число, либо объект. Всё, что не число, — объект: строка, предмет, блок, юнит, команда. Отдельный вид объекта — пустота, null, и ей отведён свой урок.

тик 0
Установить0
=
Установить1
=
Установить2
=
Установить3
=
@counter0number
числоnullnull
текстnullnull
предметnullnull
безЗначенияnullnull

Справа от значения таблица показывает вид: number, string, content, null. Это тот же столбец, что в окне «Переменные» в самой игре, и цвета те же.

Переменная не хранит вид сама по себе. Записали число — стало число; записали @copper — стал объект. Одна и та же переменная за жизнь программы бывает и тем, и другим, и никто на это не пожалуется.

Объявлять вид заранее негде и незачем: в mlog нет ни типов в объявлении, ни проверки при записи. Единственное место, где вид виден, — таблица переменных.

Числа считаются как числа. А если в арифметику попал объект, игра не разбирается, что это:

  • op add два @copper 12, потому что медь как число это единица;
  • то же самое выйдет с любым зданием, юнитом или строкой;
  • и только null даёт ноль — об этом следующий урок.

Правило простое: любой объект в числовом контексте равен единице, пустота — нулю. Это не «преобразование типа», а именно правило, и другого способа получить число из объекта нет.

"медь" — это строка: с ней работают print, format и сравнения, но не арифметика. Сложить строку с числом можно, только результат будет не тем, чего ждёшь: строка пойдёт в расчёт как объект, то есть как единица.

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