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.