-
Notifications
You must be signed in to change notification settings - Fork 0
API val
Codex edited this page Sep 19, 2026
·
4 revisions
Оглавление · Алфавитный указатель · BASIC built-ins
ClassicUO • Runtime API
Разбирает всю строку как целое либо дробное число.
val(str:String) -> Any
Выберите одну из зарегистрированных форм. Параметры передаются позиционно. Any означает значение BASIC с преобразованием внутри команды; Unit — отсутствие возвращаемого значения.
-
str— Числовой текст с необязательным знаком, внешними пробелами, десятичной точкой и экспонентой. Hex 0x не поддерживается: используйте ASC(text,fallback) или UO.Hex2Int.
Integer, если удалось разобрать Int32; иначе Decimal, если удалось разобрать double; иначе Integer 0. Неверный ввод неотличим по одному результату от числа 0. Внутри Decimal используется double, не финансовый тип decimal.
- Выполняется локально и не обращается к игровому серверу. Исходная строка не изменяется: результат нужно сохранить или передать дальше.
- Позиции и длины строк считаются в единицах UTF-16. Символ за пределами BMP, например emoji, занимает две единицы. Это не количество байтов UTF-8.
# Целое количество
#
# Разбирает всю строку как целое либо дробное число.
#
# Integer, если удалось разобрать Int32; иначе Decimal, если удалось разобрать double; иначе
# Integer 0. Неверный ввод неотличим по одному результату от числа 0. Внутри Decimal
# используется double, не финансовый тип decimal.
SUB Main()
# Строка целиком помещается в Int32.
# Ожидаемый результат: 350 (Integer). В result сохраняется результат выражения; Print только
# показывает его.
VAR result = val('350')
UO.Print(CStr(result))
END SUBРазбор параметров и выполнения:
- Строка целиком помещается в Int32.
- Ожидаемый результат: 350 (Integer). В result сохраняется результат выражения; Print только показывает его.
# Дробь с экспонентой
#
# Разбирает всю строку как целое либо дробное число.
#
# Integer, если удалось разобрать Int32; иначе Decimal, если удалось разобрать double; иначе
# Integer 0. Неверный ввод неотличим по одному результату от числа 0. Внутри Decimal
# используется double, не финансовый тип decimal.
SUB Main()
# Экспонента разрешена для дробного разбора; используется точка.
# Ожидаемый результат: 125 (Decimal). В result сохраняется результат выражения; Print только
# показывает его.
VAR result = val('1.25e2')
UO.Print(CStr(result))
END SUBРазбор параметров и выполнения:
- Экспонента разрешена для дробного разбора; используется точка.
- Ожидаемый результат: 125 (Decimal). В result сохраняется результат выражения; Print только показывает его.
# Текст с посторонним суффиксом
#
# Разбирает всю строку как целое либо дробное число.
#
# Integer, если удалось разобрать Int32; иначе Decimal, если удалось разобрать double; иначе
# Integer 0. Неверный ввод неотличим по одному результату от числа 0. Внутри Decimal
# используется double, не финансовый тип decimal.
SUB Main()
# В отличие от некоторых BASIC реализаций, префикс 50 отдельно не извлекается.
# Ожидаемый результат: 0 (Integer). В result сохраняется результат выражения; Print только
# показывает его.
VAR result = val('50 items')
UO.Print(CStr(result))
END SUBРазбор параметров и выполнения:
- В отличие от некоторых BASIC реализаций, префикс 50 отдельно не извлекается.
- Ожидаемый результат: 0 (Integer). В result сохраняется результат выражения; Print только показывает его.
ClassicUO - Bad Newbie & Basic IDE Edition