API BasicXor - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
BasicXor
Оглавление · Алфавитный указатель · BASIC built-ins
ClassicUO • Runtime API
Логическое исключающее ИЛИ двух числовых условий. Это не побитовый XOR масок.
Точный синтаксис
BasicXor(left:Any, right:Any) -> Integer
Выберите одну из зарегистрированных форм. Параметры передаются позиционно. Any означает значение BASIC с преобразованием внутри команды; Unit — отсутствие возвращаемого значения.
Параметры
left— Число Integer/Decimal или числовая строка с точкой и необязательной экспонентой, например "-1.25e2". Преобразование не зависит от языка интерфейса. Нераспознанная строка, Unit, Array и Object преобразуются в 0. Для пользовательского ввода сначала проверяйте IsNumeric.right— Число Integer/Decimal или числовая строка с точкой и необязательной экспонентой, например "-1.25e2". Преобразование не зависит от языка интерфейса. Нераспознанная строка, Unit, Array и Object преобразуются в 0. Для пользовательского ввода сначала проверяйте IsNumeric.
Возвращает
Integer 1, когда ровно один из двух преобразованных аргументов ненулевой. В остальных случаях 0. BasicXor(2,4)=0: оба аргумента истинны, побитового результата 6 здесь нет.
Поведение
- Вычисляется локально, без ожидания ответа сервера.
- Decimal в этом языке хранится как double: возможна погрешность двоичной арифметики. Это не десятичный финансовый тип .NET decimal.
Примеры
Пример 1. Одно истинное условие
# Одно истинное условие
#
# Логическое исключающее ИЛИ двух числовых условий. Это не побитовый XOR масок.
#
# Integer 1, когда ровно один из двух преобразованных аргументов ненулевой. В остальных случаях
# 0. BasicXor(2,4)=0: оба аргумента истинны, побитового результата 6 здесь нет.
SUB Main()
# left=1 истинно, right=0 ложно.
# Ожидаемый результат: 1. value сохраняет возвращённое значение; Print только выводит его.
VAR value = BasicXor(1, 0)
UO.Print(STR(value))
END SUB
Разбор параметров и выполнения:
- left=1 истинно, right=0 ложно.
- Ожидаемый результат: 1. value сохраняет возвращённое значение; Print только выводит его.
Пример 2. Два ненулевых числа
# Два ненулевых числа
#
# Логическое исключающее ИЛИ двух числовых условий. Это не побитовый XOR масок.
#
# Integer 1, когда ровно один из двух преобразованных аргументов ненулевой. В остальных случаях
# 0. BasicXor(2,4)=0: оба аргумента истинны, побитового результата 6 здесь нет.
SUB Main()
# Оба значения считаются истинными.
# Ожидаемый результат: 0. value сохраняет возвращённое значение; Print только выводит его.
VAR value = BasicXor(2, 4)
UO.Print(STR(value))
END SUB
Разбор параметров и выполнения:
- Оба значения считаются истинными.
- Ожидаемый результат: 0. value сохраняет возвращённое значение; Print только выводит его.
Пример 3. Разрешить ровно один режим
# Разрешить ровно один режим
#
# Логическое исключающее ИЛИ двух числовых условий. Это не побитовый XOR масок.
#
# Integer 1, когда ровно один из двух преобразованных аргументов ненулевой. В остальных случаях
# 0. BasicXor(2,4)=0: оба аргумента истинны, побитового результата 6 здесь нет.
SUB Main()
# left=buyMode и right=sellMode — флаги скрипта.
# Оба 0 или оба ненулевые попадают в ELSE; функция не запускает покупку или продажу.
VAR buyMode = 1
VAR sellMode = 0
IF BasicXor(buyMode, sellMode) THEN
UO.Print('Exactly one mode enabled')
ELSE
UO.Print('Choose one mode')
END IF
END SUB
Разбор параметров и выполнения:
- left=buyMode и right=sellMode — флаги скрипта.
- Оба 0 или оба ненулевые попадают в ELSE; функция не запускает покупку или продажу.