API ArrayContains - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
ArrayContains
Оглавление · Алфавитный указатель · BASIC built-ins
ClassicUO • Runtime API
Проверяет наличие элемента во внешнем уровне массива.
Точный синтаксис
ArrayContains(array:Any, pattern:Any) -> Integer
Выберите одну из зарегистрированных форм. Параметры передаются позиционно. Any означает значение BASIC с преобразованием внутри команды; Unit — отсутствие возвращаемого значения.
Параметры
array— Массив для проверки. Другой вид значения даёт 0.pattern— Искомое значение. Числа Integer и Decimal сравниваются численно; строки учитывают регистр и не преобразуются в числа.
Возвращает
Integer Boolean: 1 — условие выполнено, 0 — нет. Вложенные Array и Object сравниваются по тождеству: ссылка на тот же массив/объект совпадает, разные экземпляры — нет. Это не рекурсивный поиск.
Поведение
- Сравнение внешних элементов не изменяет коллекцию. Integer 1 равен Decimal 1.0, но строка "1" им не равна.
- Для сравнения содержимого двух разных массивов переберите их элементы явно; одинаковый вид Array не означает равенство.
Примеры
Пример 1. Проверить элемент списка
# Проверить элемент списка
#
# Проверяет наличие элемента во внешнем уровне массива.
#
# Integer Boolean: 1 — условие выполнено, 0 — нет. Вложенные Array и Object сравниваются по
# тождеству: ссылка на тот же массив/объект совпадает, разные экземпляры — нет. Это не
# рекурсивный поиск.
SUB Main()
# DIM values(1) создаёт два элемента. Первый аргумент команды — Array, второй — число 20.
# Совпадение во внешнем уровне даёт 1; индекс элемента не возвращается.
DIM values(1)
values[0] = 10
values[1] = 20
IF ArrayContains(values, 20) THEN
UO.Print('20 is in the array')
END IF
END SUB
Разбор параметров и выполнения:
- DIM values(1) создаёт два элемента. Первый аргумент команды — Array, второй — число 20.
- Совпадение во внешнем уровне даёт 1; индекс элемента не возвращается.
Пример 2. Не путать числовой текст с числом
# Не путать числовой текст с числом
#
# Проверяет наличие элемента во внешнем уровне массива.
#
# Integer Boolean: 1 — условие выполнено, 0 — нет. Вложенные Array и Object сравниваются по
# тождеству: ссылка на тот же массив/объект совпадает, разные экземпляры — нет. Это не
# рекурсивный поиск.
SUB Main()
# DIM values(0) создаёт один элемент. Искомая строка "10" отличается видом от Integer 10.
# Результат 0; команда не выполняет неявный val для строк.
DIM values(0)
values[0] = 10
UO.Print(STR(ArrayContains(values, '10')))
END SUB
Разбор параметров и выполнения:
- DIM values(0) создаёт один элемент. Искомая строка "10" отличается видом от Integer 10.
- Результат 0; команда не выполняет неявный val для строк.
Пример 3. Проверить ссылку на вложенный массив
# Проверить ссылку на вложенный массив
#
# Проверяет наличие элемента во внешнем уровне массива.
#
# Integer Boolean: 1 — условие выполнено, 0 — нет. Вложенные Array и Object сравниваются по
# тождеству: ссылка на тот же массив/объект совпадает, разные экземпляры — нет. Это не
# рекурсивный поиск.
SUB Main()
# outer[0] содержит тот же массив child; оба DIM задают единственный индекс 0.
# Результат 1. Другой отдельно созданный массив с такими же числами дал бы 0.
DIM child(0)
DIM outer(0)
outer[0] = child
UO.Print(STR(ArrayContains(outer, child)))
END SUB
Разбор параметров и выполнения:
- outer[0] содержит тот же массив child; оба DIM задают единственный индекс 0.
- Результат 1. Другой отдельно созданный массив с такими же числами дал бы 0.