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.


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

Basic