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

SUB Main()

ClassicUO • Basic

Файл Basic содержит определения процедур/функций и необязательные глобальные объявления. Исполняемые действия помещаются внутрь процедуры. Здесь точка входа — Main(); примеры являются полными файлами, а не фрагментами для вставки вне процедуры.

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

Option Explicit On
SUB Main()
    statement
END SUB
# comment
; comment
REM comment
// comment
' comment

Параметры

  • Main / entry — Процедура, выбранная для запуска. Main — принятое имя, а не автоматически выполняемая команда. SUB Main() объявляет процедуру без аргументов. Вспомогательная функция работает только при вызове.
  • statement — Одна исполняемая инструкция на строку внутри SUB…END SUB или FUNCTION…END FUNCTION. Глобальные VAR/CONST и Option Explicit находятся вне этих блоков. Option Explicit размещается перед объявлениями.
  • comment — # и ; начинают комментарий вне строковых кавычек, в том числе после кода. REM, // и апостроф начинают отдельную строку комментария после возможного отступа. В строковом значении эти символы могут сохраняться как обычный текст.

Возвращает

Файл или объявление SUB при загрузке ничего не возвращает. RETURN expression возвращает значение из вызванной процедуры и немедленно завершает этот вызов. Достижение конца блока либо RETURN без выражения даёт Unit — отсутствие значения.

Поведение

  • Сохраняйте исходники в UTF-8, чтобы не терялись локализованные комментарии и строки. Принимаются окончания строк CRLF и LF. Отступы и пустые строки улучшают читаемость, но не заменяют END SUB или END FUNCTION.
  • Ключевые слова, имена процедур и переменных не зависят от регистра букв. itemCount, ITEMCOUNT и ItemCount обращаются к одной привязке. Регистр внутри текста сохраняется; строковые ключи вроде UO.SetGlobal("Key", …) — данные, а не идентификаторы.
  • Простое имя начинайте с латинской буквы ASCII или подчёркивания; далее допустимы буквы, цифры и подчёркивания. Не используйте зарезервированные слова и имена API для собственных объявлений. UO.Print — составное имя вызова. Двоеточие после имени задаёт метку, а не общий разделитель нескольких инструкций.
  • Движок нормализует поддерживаемый Basic, разбирает весь файл, собирает объявления и проверяет имена. Поэтому вспомогательная функция может быть ниже Main. Загрузка не запускает все определения: старт выбранной процедуры инициализирует её выполнение и следует её вызовам.
  • Примеры только вычисляют значения. После проверки шаблона нужные UO-вызовы помещаются внутрь его блока. Это правила нашего движка; они не означают поддержку всех возможностей других реализаций Basic.

Примеры

1. Комментарии и текст строки

# Main объявляет note с текстом "ore #1; keep". Символы # и ; внутри строки сохраняются. Остальные комментарии #, REM, // и с апострофом ничего не выполняют. RETURN возвращает исходный текст.
Option Explicit On
# Complete file
SUB Main()
    REM Full-line comment
    VAR note = "ore #1; keep" # Trailing comment
    // Another full-line comment
    ' Another full-line comment
    RETURN note
END SUB

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

Main объявляет note с текстом "ore #1; keep". Символы # и ; внутри строки сохраняются. Остальные комментарии #, REM, // и с апострофом ничего не выполняют. RETURN возвращает исходный текст.

2. Полностью определённая функция

# Main вызывает DoubleCount с amount=7. Функция определена ниже Main, умножает параметр Integer на 2 и возвращает 14. Main передаёт этот результат дальше. Не нужны отсутствующий Include-файл или необъявленная функция.
Option Explicit On
SUB Main()
    RETURN DoubleCount(7)
END SUB
FUNCTION DoubleCount(ByVal amount AS Integer)
    VAR result = amount * 2
    RETURN result
END FUNCTION

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

Main вызывает DoubleCount с amount=7. Функция определена ниже Main, умножает параметр Integer на 2 и возвращает 14. Main передаёт этот результат дальше. Не нужны отсутствующий Include-файл или необъявленная функция.

3. Регистр имени

# Скрипт объявляет itemCount=3, затем через ITEMCOUNT и itemcount прибавляет 2 к той же переменной. Ключевые слова со смешанным регистром принимаются. Main возвращает 5; разное написание не создаёт дополнительных переменных.
Option Explicit On
sUb Main()
    Var itemCount = 3
    ITEMCOUNT = itemcount + 2
    ReTuRn ItemCount
EnD sUb

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

Скрипт объявляет itemCount=3, затем через ITEMCOUNT и itemcount прибавляет 2 к той же переменной. Ключевые слова со смешанным регистром принимаются. Main возвращает 5; разное написание не создаёт дополнительных переменных.


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

Basic