Skip to content

API Basic Constants uk

Codex edited this page Sep 10, 2026 · 1 revision

CONST

ClassicUO • Basic

CONST оголошує ім’я, прив’язку якого не можна змінити звичайним присвоєнням. Початковим значенням може бути літерал або результат виразу. Рушій обчислює ініціалізатор під час виконання оголошення.

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

CONST name [AS type] = expression [, name ...]

Параметри

  • name — Ім’я константи без лапок. Використовуйте окреме ім’я у своїй області. Оголошення поза процедурами глобальне; усередині процедури — локальне для її виклику.
  • type — Необов’язковий підтримуваний тип AS із тими самими перетвореннями, що у VAR. Наприклад, AS Integer перетворює початкове значення на знакове 32-бітне ціле цього рушія. Квадратні дужки позначають необов’язкову частину; навколо AS їх писати не потрібно.
  • expression — Обов’язковий початковий вираз. Дозволено число, рядок у лапках, TRUE/FALSE, арифметику чи результат підтримуваної функції. Обчислюється один раз для цього виконання оголошення, а не назавжди для файлу.

Повертає

Значення немає. CONST — оголошення, а не функція чи логічний запит. Читання імені дає збережений результат ініціалізатора. RETURN у прикладах належить Main або ApplyLimit.

Поведінка

  • Звичайне присвоєння, LET і SET не можуть замінити цю прив’язку: виникає помилка зміни константи. Її можна обробити через TRY/CATCH. Option Explicit вимагає оголошення, але не перетворює кожне неправильне присвоєння на помилку до запуску.
  • Глобальна константа ініціалізується за нового запуску основної процедури й успадковується викликаними процедурами з ознакою константи та типом AS. Локальна ініціалізується під час оголошення. Функція-ініціалізатор тому може знову виконати роботу при наступному запуску.
  • Захищається прив’язка імені, а не внутрішній вміст Array/Object. Окреме локальне оголошення може перекривати глобальне ім’я; інше оголошення створює нову прив’язку. Для зрозумілості не використовуйте імена констант повторно.
  • Рушій обчислює початковий вираз, застосовує AS та позначає константу в області видимості. Наступне звичайне присвоєння перевіряє цю ознаку перед зміною значення. Приклади зі скалярними літералами не виконують ігрових дій.

Приклади

1. Стала затримка в розрахунку

# delayлокальна константа Integer зі значенням 350. Множення на 2 створює окрему змінну doubled=700. Main повертає 700; очікування у прикладі не виконується.
Option Explicit On
SUB Main()
    CONST delay AS Integer = 350
    VAR doubled = delay * 2
    RETURN doubled
END SUB

Пояснення параметрів і виконання:

delay — локальна константа Integer зі значенням 350. Множення на 2 створює окрему змінну doubled=700. Main повертає 700; очікування у прикладі не виконується.

2. Глобальна межа у функції

# limitглобальна константа Integer зі значенням 50. ApplyLimit отримує amount=72 та maximum=50 і повертає меншу кількість, 50. Функція визначена повністю й лише читає параметри.
Option Explicit On
CONST limit AS Integer = 50
FUNCTION ApplyLimit(amount, maximum)
    IF amount > maximum THEN
        RETURN maximum
    END IF
    RETURN amount
END FUNCTION
SUB Main()
    RETURN ApplyLimit(72, limit)
END SUB

Пояснення параметрів і виконання:

limit — глобальна константа Integer зі значенням 50. ApplyLimit отримує amount=72 та maximum=50 і повертає меншу кількість, 50. Функція визначена повністю й лише читає параметри.

3. Обробка забороненого присвоєння

# limit починається з 3. Присвоєння 4 викликає помилку та не змінює константу. CATCH зберігає помилку у problem і задає caught=TRUE. Main повертає логічну 1; тут TRUE та 1 еквівалентні.
Option Explicit On
SUB Main()
    CONST limit = 3
    VAR caught = FALSE
    TRY
        limit = 4
    CATCH problem
        caught = TRUE
    END TRY
    RETURN caught
END SUB

Пояснення параметрів і виконання:

limit починається з 3. Присвоєння 4 викликає помилку та не змінює константу. CATCH зберігає помилку у problem і задає caught=TRUE. Main повертає логічну 1; тут TRUE та 1 еквівалентні.


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

Basic

Clone this wiki locally