Перейти к содержанию

Модификаторы переменных и методов

TODO

Необходимо обновить ссылки по всей статье.

Опциональность части синтаксиса

Во всех блоках кода ниже [Квадратные скобки] используются для того, чтобы обозначить необязательность написания того, что заключено внутри них.

Переменные

В объявлении переменных на первом месте идут ключевые слова-модификаторы, затем — тип данных (тип переменной), после — её название.

[модификатор1 [модификатор2 [...]]] тип имя [ = значение];

"Имя" переменной может состоять из цифр, букв латинского алфавита и нижних подчёркиваний, притом первым должны идти либо буква, либо "_".

Если в объявлении сразу есть значение, то вместо конкретного типа может стоять ключевое слово let — автоматическое взятие присваиваемого типа (аналог autо в C++). К примеру, в конструкции "let a = 3.4;" переменной "a" присвоится тип double, так как "3.4" — как раз double.

Список модификаторов:

  • const: запрет на последующее изменение значения. Также см. «Константы и перечисления».

  • private и protected: область видимости переменной, см. «Области видимости» (очень укороченный материал на Википедии).

  • play, ui, clearscope и virtualscope: в какой сфере обработки движка находится переменная, см. «Сферы влияния».

  • meta: указание, что данная переменная может быть изменена дочерними классами только через свойства актора (через блок Default {}). Грубо говоря, константа для актора, переопределяемая в его свойствах.

  • transient: переменная с этим модификатором не будет записываться в файл во время сохранения игры.


Далее дан список технических модификаторов, которые используются движком, но использование которых в пользовательских модификациях резко ограничено или просто не имеет смысла.

  • native: сообщение компилятору, что эти данные/методы нужно подгружать с более низкого уровня движка.

  • readonly: эта переменная доступна только для чтения (изменяется она на более низком уровне, чем ZScript).

  • @: данная переменная — указатель на что-то, хранящееся вне юрисдикции ZScript.

  • deprecated(версия, сообщение): если использовать такую переменную в версии ZScript выше указанной версии, компилятор выдаст предупреждение, что эта переменная уже неактуальна и лучше бы использовать другую. сообщение — строковая константа, которая должна выводиться; если не указана — берётся стандартный текст.

  • version(версия): запрет запуска движка, если используемая версия ZScript ниже указанной версии.

  • latent: ничего не делает. Вообще ничего...