API Basic Program uk - 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; різне написання не створює додаткових змінних.