Impulse
Мыслитель
(8701)
7 лет назад
GML структурно похож на язык С своими блоками кода, вызовами функций, присваиванием переменных, синтаксисом операторов и так далее. GML различает операторы и выражения. Например,
g < 1;
не является правильным оператором и вызовет ошибку. Также, присваивание переменных — это всегда оператор, и поэтому не может быть использован в выражениях. Например, следующая строка всегда генерировала бы ошибку потому, что она бы вычисляла вложенное выражение как true или false, а затем сравнивала бы булевый результат со строкой «Yes» (неправильное сравнение):
if ((answer = get_string("Yes or No?", "")) == "Yes")
Стоит помнить, что знак равно «=» является оператором присвоения и булевым оператором сравнения в выражениях, тогда как в С++ в выражениях пишут двойной знак «==». Тем не менее, двойной знак равно «==» будет правильно интерпретирован в случае использования его в выражениях. Использование такого знака в качестве оператора присваивания вызовет ошибку исполнения. GML также поддерживает операторы инкремента:
g++; // поддерживается как постфиксная, так и префиксная запись
и
g += 1;
то же самое, что и
g = g + 1;
Также существуют операторы: -=, *=, /=, |=, &= и ^=. Начиная с GMS2 введена поддержка тернарного оператора ?:. Операторы в GML могут быть разделены точкой с запятой, однако это не является обязательным условием (хотя и может привести к ошибке в некоторых специфичных случаях).