API Basic Literals - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
123 / 0x0EED / "text" / TRUE
ClassicUO • Basic
Литерал записывает значение прямо в исходнике. Для чисел и текста в кавычках объявление не требуется. TRUE и FALSE — предопределённые логические значения. Число в кавычках остаётся текстом, пока его не изменит явное преобразование или тип объявления.
Точный синтаксис
123
-2147483648
0x0EED
0xFFFFFFFF
2.5
"text"
'text'
TRUE
FALSE
Параметры
integer / hexadecimal— Десятичный Integer от -2147483648 до 2147483647 либо 0x и шестнадцатеричные цифры 0–9/A–F. Префикс x пишется маленькой буквой. Шестнадцатеричный литерал задаёт 32 бита: 0xFFFFFFFF — Integer -1, а не положительное 64-битное число.floating— Дробное число с цифрами до и после точки, например 2.5 или -0.25. Пишите 0.5 вместо .5. Запятая, экспоненциальная запись вроде 1e3 и суффиксы числовых литералов этой грамматикой не поддерживаются.text— Текст в парных одинарных или двойных кавычках. Чтобы включить кавычку, используйте другую пару либо Chr(34)/Chr(39) при сборке текста. Escape-последовательности с обратной косой чертой и удвоение кавычек не интерпретируются. Строку примера размещайте на одной физической строке.TRUE / FALSE— TRUE — Integer 1, FALSE — Integer 0. Не переобъявляйте эти имена. Это значения, а не вызовы: пишите TRUE, а не TRUE().
Возвращает
Вычисление целого/шестнадцатеричного литерала даёт Integer; числа с точкой — Decimal, двоичное число с плавающей точкой; текста в кавычках — String. TRUE/FALSE дают Integer 1/0. Вычисление значения не выполняет игровое действие и не объявляет переменную.
Поведение
- Знак в -5 — унарная операция. Движок обрабатывает -2147483648 как минимальное знаковое целое, не требуя сначала вместить положительный модуль. Целые вне диапазона вызывают ошибку; для большего приблизительного числа в расчёте используйте подходящее дробное значение.
- Текст сохраняет символы и регистр. "350" — не число 350, а "false" — не FALSE. # и ; в кавычках являются текстом, вне кавычек начинают комментарий. Правила AS и функций преобразования описаны в статье AS и карточках функций.
- Лексер распознаёт литерал. При вычислении движок разбирает десятичное/шестнадцатеричное целое или дробное число независимо от локали; у текста снимает внешние кавычки. Переключение языка IDE не меняет десятичный разделитель исходника.
- Игровые API различают serial, графический type и координату, даже если все они представлены числами. Сам литерал не задаёт этот смысл: назначение определяется параметром вызываемой команды.
Примеры
1. Шестнадцатеричный type и граница Integer
# itemType=0x0EED равен десятичному 3821. lowest=-2147483648 равен знаковой битовой записи 0x80000000. Сравнение успешно, Main возвращает itemType=3821. Здесь проверяются только значения, поиск предмета не выполняется.
Option Explicit On
SUB Main()
VAR itemType = 0x0EED
VAR lowest = -2147483648
IF lowest = 0x80000000 THEN
RETURN itemType
END IF
RETURN 0
END SUB
Разбор параметров и выполнения:
itemType=0x0EED равен десятичному 3821. lowest=-2147483648 равен знаковой битовой записи 0x80000000. Сравнение успешно, Main возвращает itemType=3821. Здесь проверяются только значения, поиск предмета не выполняется.
2. Два вида кавычек
# owner="O'Brien" содержит апостроф. instruction использует одинарные кавычки вокруг текста с двойными. Соединение owner, " | " и instruction возвращает O'Brien | say "go". Обратные косые черты для экранирования в скрипте не нужны.
Option Explicit On
SUB Main()
VAR owner = "O'Brien"
VAR instruction = 'say "go"'
RETURN owner + " | " + instruction
END SUB
Разбор параметров и выполнения:
owner="O'Brien" содержит апостроф. instruction использует одинарные кавычки вокруг текста с двойными. Соединение owner, " | " и instruction возвращает O'Brien | say "go". Обратные косые черты для экранирования в скрипте не нужны.
3. Логические значения как числа
# enabled=TRUE сохраняет 1, stopped=FALSE — 0. Умножение и сложение дают 1*10+0=10. Main возвращает число 10; оно является результатом расчёта, а не каноническим логическим TRUE.
Option Explicit On
SUB Main()
VAR enabled = TRUE
VAR stopped = FALSE
RETURN enabled * 10 + stopped
END SUB
Разбор параметров и выполнения:
enabled=TRUE сохраняет 1, stopped=FALSE — 0. Умножение и сложение дают 1*10+0=10. Main возвращает число 10; оно является результатом расчёта, а не каноническим логическим TRUE.