Skip to content

Unit's Expression2

Yamir edited this page Nov 24, 2025 · 1 revision

Изменения в Expression2 от Unit!

Модули

Inventory

CoinShop

Request

Preprocessor

На сервере внесены некоторые изменения в preprocessor Expression2.
Они были расчитаны на работу и поддержку кода на других версиях Expression2.

ifdef / ifndef

// В оригинале проверяет на наличие функции unit()
// Однако, такой функции нет, но Preprocessor все равно вставит этот блок кода
// во время компиляции кода.
#ifdef unit()
#endif

// Противоположность #ifdef
#ifndef unit()
#endif

pragma / showpragmas

// Специальные настройки, которые редактируют поведение препроцессорa и компилятора.
#pragma <id>

// Временное решение, которое показывает все существующие
// настройки для препроцессора и компилятора.
#showpragmas

defconst

Warning

Эта директива выключена в коде препроцессора. Это означает, что она не будет работать.

// Определение runtime-only константы.
#defconst _MYCONSTANT 1

print(_MYCONSTANT)

define

Warning

Эта директива выключена в коде препроцессора. Это означает, что она не будет работать.

Warning

Компилятор не слишком умный, чтобы во время обработки просчитывать значения и оптимизировать код. Preprocessor буквально вставляет значения, которые затем обрабатываются в рантайме.

// Проверка, что мы на Unit!
#ifdef unit()

// Определение функции min.
// Везде, где используется min(a, b) будет
// заменено на a < b ? a : b
#define min(a, b) a < b ? a : b

#else

// Поддержка других версий Expression2.
function min(a:number, b:number)
{
    return a < b ? a : b 
} 

#endif

print(min(1, 2))
// Заменяется на:
print(1 < 2 ? 1 : 2)

ifdef VALUE

Warning

Эта директива выключена в коде препроцессора. Это означает, что она не будет работать.

// Определение MYDEF как 1.
#define MYDEF 1

// Проверка наличия MYDEF
#ifdef MYDEF() // Скобочки нужны для того, чтобы этот код работал на других версиях Expression2.
// Выписывание значения MYDEF.
// Preprocessor вставит 1 за место MYDEF.
print("Defined :) - ", MYDEF)
#else
print("Not defined :(")
#endif

Clone this wiki locally