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

Option Explicit

ClassicUO • Basic

Требует объявления переменных до запуска скрипта. Это директива файла языка Basic этого движка, а не команда UO и не вызов функции.

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

Option Explicit
Option Explicit On
Option Explicit Off

Параметры

  • On / Off — On включает строгую проверку объявлений; Off отключает её. Если после Explicit ничего нет, подразумевается On. Если директивы в файле нет, сохраняется прежний нестрогий режим. Скобки и кавычки не нужны.

Возвращает

Значения нет. Директива не является выражением и не возвращает TRUE/FALSE, число или ID. RETURN в примерах относится к Main или Enough, а не к Option Explicit.

Поведение

  • Напишите директиву один раз, до переменных, констант и процедур. Перед ней допустимы пустые строки и комментарии. Повторная или поздняя директива — ошибка SC013, включая попытку позже переключиться на Off.
  • В режиме On чтение или присваивание необъявленной переменной вызывает SC006 с указанием места в исходнике. Проверяются также имена массивов, счётчики FOR и объекты перед вызовом метода. Объявляйте через VAR/DIM/CONST; параметры и именованная переменная CATCH тоже объявляют имена. FOR VAR объявляет счётчик.
  • Локальную переменную объявляйте до использования. Локальная переменная одной процедуры не объявляет имя в другой. Глобальные объявления доступны процедурам. Это проверка имён, а не доказательство инициализации значения во всех ветках.
  • Парсер читает весь файл; анализатор сопоставляет имена с объявлениями; при ошибке строгой проверки выполнение отклоняется до первой команды. При повторной загрузке применяется режим нового файла независимо от предыдущего скрипта. В режиме Off возможны предупреждения, а чтение ещё не созданного значения может завершиться ошибкой выполнения.
  • Сама директива не выполняет игровые действия и не отправляет пакеты. Она не означает полную совместимость с VB.NET и не проверяет существование игровой цели.

Примеры

1. Объявление до присваивания

# On включает проверку. DIM объявляет count типа Integer; присваивание 5 допустимо. Main возвращает 5. Если заменить count на необъявленное coutn, запуск будет отклонён с SC006.
Option Explicit On
SUB Main()
    DIM count AS Integer
    count = 5
    RETURN count
END SUB

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

On включает проверку. DIM объявляет count типа Integer; присваивание 5 допустимо. Main возвращает 5. Если заменить count на необъявленное coutn, запуск будет отклонён с SC006.

2. Параметр и глобальная константа

# Директива без режима означает On. minimum — глобальная константа 3. amount — объявленный параметр в Enough и отдельная локальная переменная в Main. Enough сравнивает 5 >= 3 и возвращает TRUE, численно 1.
Option Explicit
CONST minimum = 3
FUNCTION Enough(amount)
    RETURN amount >= minimum
END FUNCTION
SUB Main()
    VAR amount = 5
    RETURN Enough(amount)
END SUB

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

Директива без режима означает On. minimum — глобальная константа 3. amount — объявленный параметр в Enough и отдельная локальная переменная в Main. Enough сравнивает 5 >= 3 и возвращает TRUE, численно 1.

3. Запуск старого скрипта

# Off допускает создание legacyCounter присваиванием без DIM. Main возвращает 7. В этом примере совместимости может остаться предупреждение; для строгой проверки объявите переменную и включите On.
Option Explicit Off
SUB Main()
    legacyCounter = 7
    RETURN legacyCounter
END SUB

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

Off допускает создание legacyCounter присваиванием без DIM. Main возвращает 7. В этом примере совместимости может остаться предупреждение; для строгой проверки объявите переменную и включите On.


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

Basic