API Basic Variables - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki

VAR / DIM

ClassicUO • Basic

VAR и скалярный DIM объявляют именованное значение. Присваивание вычисляет выражение и сохраняет результат. Объявление внутри процедуры локально для её вызова; объявление вне процедур глобально для скрипта.

Точный синтаксис

VAR name [AS type] [= expression] [, name ...]
DIM name [AS type] [= expression] [, name ...]
name = expression
LET name = expression
SET name = expression

Параметры

  • name — Имя переменной без кавычек. Используйте латинские буквы, цифры и подчёркивания, начиная с буквы или подчёркивания. Пишите имя одинаково; ключевые слова языка использовать нельзя.
  • type — Необязательное указание AS. Integer/Long/Short/Byte используют знаковое 32-битное преобразование этого движка; Double/Single/Decimal — число двойной точности; String — текст; Boolean/Bool — логическое значение; Variant/Object сохраняют вид значения. Эти алиасы не задают отдельные диапазоны byte/short/long из VB.NET.
  • expression — Необязательный инициализатор в VAR/DIM; обязательная правая часть присваивания. Вычисляется при выполнении строки. Скаляр AS String без инициализатора начинает с пустого текста; типизированные числа и Boolean по умолчанию равны нулю. Без инициализатора нетипизированный VAR и VAR AS Variant/Object содержат Unit (отсутствие значения), а скалярный DIM задаёт 0. Переменная без типа впоследствии может хранить значение другого вида.

Возвращает

Значения нет. VAR, DIM и присваивание не возвращают результат. Чтение имени даёт сохранённое значение. RETURN в каждом примере возвращает это значение из Main; это не результат команды DIM.

Поведение

  • Квадратные скобки в синтаксисе выше обозначают необязательную часть; вокруг AS и инициализатора их писать не нужно. Для DIM массива существует другая форма объявления.
  • LET и SET в этом движке — совместимые формы обычного присваивания. При Option Explicit On они не объявляют имя. Тип AS применяется и при следующих присваиваниях; неверное преобразование или неподдерживаемый тип вызывают ошибку выполнения.
  • Локальные имена принадлежат вызову процедуры. Объявление внутри IF не создаёт отдельную область блока. Если ветка не выполнялась, значение во время выполнения не создано. Если значение нужно после ветвления, объявите переменную до него.
  • Совместимость Injection: вызываемая процедура получает текущие скалярные глобальные значения вызывающей и их типы AS. Переприсваивание скаляра в дочерней процедуре не изменяет значение у вызывающей. Для такого изменения верните новое значение или передайте аргумент BYREF. Это не глубокое клонирование значений Array/Object. Новый запуск основной процедуры заново инициализирует глобальные переменные; локальное объявление перекрывает имя в своём кадре, сохраняя глобальное объявление.
  • Движок вычисляет инициализатор, создаёт переменную в текущей области и применяет преобразование типа. При следующем присваивании сначала вычисляется правая часть. Примеры считают локально; переменные автоматически не сохраняются в профиль или JSON-файл.

Примеры

1. Изменение целого числа

# count начинается с 0, получает 5, затем LET добавляет 2. Main возвращает Integer 7. Первый DIM объявляет имя; последующие присваивания изменяют значение.
Option Explicit On
SUB Main()
    DIM count AS Integer
    count = 5
    LET count = count + 2
    RETURN count
END SUB

Разбор параметров и выполнения:

count начинается с 0, получает 5, затем LET добавляет 2. Main возвращает Integer 7. Первый DIM объявляет имя; последующие присваивания изменяют значение.

2. Текст и логический флаг

# label начинается с пустой String. SET записывает "ore". enabled имеет тип Boolean и значение TRUE; ветка IF возвращает String "ore". TRUE пишется без кавычек и означает логическую 1.
Option Explicit On
SUB Main()
    DIM label AS String
    VAR enabled AS Boolean = TRUE
    SET label = "ore"
    IF enabled = TRUE THEN
        RETURN label
    END IF
    RETURN "disabled"
END SUB

Разбор параметров и выполнения:

label начинается с пустой String. SET записывает "ore". enabled имеет тип Boolean и значение TRUE; ветка IF возвращает String "ore". TRUE пишется без кавычек и означает логическую 1.

3. Глобальное значение и локальный расчёт

# baseAmount — глобальное значение 4. extra — локальная переменная Calculate со значением 3. Calculate возвращает 7; Main сохраняет его в собственной локальной result и возвращает 7. extra не является локальной переменной Main.
Option Explicit On
VAR baseAmount AS Integer = 4
FUNCTION Calculate()
    VAR extra = 3
    RETURN baseAmount + extra
END FUNCTION
SUB Main()
    VAR result = Calculate()
    RETURN result
END SUB

Разбор параметров и выполнения:

baseAmount — глобальное значение 4. extra — локальная переменная Calculate со значением 3. Calculate возвращает 7; Main сохраняет его в собственной локальной result и возвращает 7. extra не является локальной переменной Main.


en · ru · uk · fr · de · it · es · zh-tw · ja · ko

Basic