-
Notifications
You must be signed in to change notification settings - Fork 0
API Basic SafeCall
ClassicUO • Basic
Safe Call — совместимый префикс обычного вызова. Он не добавляет защиту от ошибок, тайм-аут, блокировку или фоновое выполнение.
Safe Call FunctionName(arguments)
VAR value = Safe Call FunctionName(arguments)
-
FunctionName— Имя существующей процедуры/функции. Игровые команды требуют UO.; встроенные функции BASIC пишутся без префикса. -
arguments— Обычные аргументы выбранной функции. Скобки обязательны. Между Safe и Call используются пробелы.
Возвращается исходный результат вызываемой функции. Unit остаётся отсутствием значения; Safe Call не преобразует результат в true/false.
- Вызов выполняется в текущем потоке скрипта по обычным правилам аргументов, ByRef, возврата и остановки. Отдельная задача не создаётся.
- Ошибка не подавляется. Используйте Try/Catch для обработки; Safe Call сам по себе не является обработчиком ошибок.
- В RaiseEvent этот префикс не разрешён. Для нового кода обычно достаточно обычного FunctionName(...). Это совместимость данного движка, а не стандартная конструкция VB.NET.
# Sum получает x=20 и y=22, возвращает 42. Safe Call не меняет возвращаемый тип или число.
FUNCTION Sum(x, y)
RETURN x + y
END FUNCTION
SUB Main()
RETURN Safe Call Sum(20, 22)
END SUBРазбор параметров и выполнения:
Sum получает x=20 и y=22, возвращает 42. Safe Call не меняет возвращаемый тип или число.
# Val получает строку "123" и возвращает число. К нему прибавляется 7; итог — 130. Val — встроенная функция BASIC, поэтому UO. не добавляется.
SUB Main()
VAR text = "123"
RETURN Safe Call Val(text) + 7
END SUBРазбор параметров и выполнения:
Val получает строку "123" и возвращает число. К нему прибавляется 7; итог — 130. Val — встроенная функция BASIC, поэтому UO. не добавляется.
# Fail явно выбрасывает ошибку. Она доходит до Catch, где caught становится TRUE (1). Без Try/Catch ошибка распространялась бы дальше. Полный код Fail приведён ниже.
FUNCTION Fail()
THROW "sample error"
END FUNCTION
SUB Main()
VAR caught = FALSE
TRY
VAR value = Safe Call Fail()
CATCH problem
caught = TRUE
END TRY
RETURN caught
END SUBРазбор параметров и выполнения:
Fail явно выбрасывает ошибку. Она доходит до Catch, где caught становится TRUE (1). Без Try/Catch ошибка распространялась бы дальше. Полный код Fail приведён ниже.
ClassicUO - Bad Newbie & Basic IDE Edition