contains

Протестируйте, если запись существует в контейнере

Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.

Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.

Синтаксис

contains(s, object)
contains(l, object, <i>)
contains(t, object)

Описание

contains(s, object) тесты, если object элемент набора s.

contains(l, object) возвращает индекс object в списке l.

contains(t, object) тесты, если массив, таблица или доменный t имеет запись, соответствующую индексу object.

contains быстрый тест членства для MuPAD® основные контейнерные типы данных. Для списков и наборов, contains ищет элементы данный объект. Однако для массивов, таблиц, и областей, contains ищет индексы.

contains работает синтаксически, т.е. математически эквивалентные объекты считаются равными, только если они синтаксически идентичны. contains не представляет elementhood в математическом смысле. Смотрите Пример 2.

contains не убывает рекурсивно в подвыражения; используйте has достигнуть этого. Смотрите Пример 3.

contains(s, object) возвращает TRUE если object элемент набора s. В противном случае это возвращает FALSE.

contains(l, object) возвращает положение object в списке l как положительное целое число, если object запись l. В противном случае возвращаемым значением является 0. Если больше чем одна запись l равно object, затем индекс первого вхождения возвращен.

Путем передачи третьего аргумента i к contains, можно задать положение в списке, где поиск должен запуститься. Затем записи с индексом меньше, чем i не учтены. Если i вне области значений, затем возвращаемым значением является 0.

Смотрите пример 4 и пример 5.

contains(t, object) возвращает TRUE если массив, таблица или доменный t имеет запись, соответствующую индексу object. В противном случае это возвращает FALSE. См. пример 6.

Примеры

Пример 1

contains может использоваться, чтобы протестировать, если набор содержит данный элемент:

contains({a, b, c}, a), contains({a, b, c}, 2)

Пример 2

contains работает синтаксически, т.е. математически эквивалентные объекты считаются равными, только если они синтаксически идентичны. В этом примере contains возвращает FALSE начиная с y*(x + 1) и y*x + y различные представления того же математического выражения:

contains({y*(x + 1)}, y*x + y)

Elementhood в математическом смысле представлен оператором in:

simplify(y*x + y in {y*(x+1)}, condition)

Пример 3

contains не убывает рекурсивно в операнды его первого аргумента. В следующем примере, c не элемент набора, и поэтому FALSE возвращен:

contains({a, b, c + d}, c)

Если вы хотите протестировать, содержится ли данное выражение где-нибудь в сложном выражении, используйте has:

has({a, b, c + d}, c)

Пример 4

contains примененный list возвращает положение заданного объекта в списке:

contains([a, b, c], b)

Если список не содержит объект, 0 возвращен:

contains([a, b, c], d)

Пример 5

contains возвращает положение первого вхождения данного объекта в списке, если это происходит несколько раз:

l := [a, b, a, b]: contains(l, b)

Стартовая позиция для поиска может быть дана как дополнительный третий аргумент:

contains(l, b, 1), contains(l, b, 2),
contains(l, b, 3), contains(l, b, 4)

Если третий аргумент вне области значений, то возвращаемым значением является 0:

contains(l, b, -1), contains(l, b, 0), contains(l, b, 5)

Пример 6

Для таблиц, contains возвращает TRUE если второй аргумент является допустимым индексом в таблице. Записи, сохраненные в таблице, не рассматриваются:

t := table(13 = value): contains(t, 13), contains(t, value)

Точно так же contains тесты, если array имеет значение для данного индекса. Массив a имеет значение, соответствующее индексу (1, 1), но ни один для индекса (1, 2):

a := array(1..3, 1..2, (1, 1) = x, (2, 1) = PI):
contains(a, (1, 1)), contains(a, (1, 2))

contains не предназначается для тестирования, если массив содержит данное значение:

contains(a, PI)
Error: Index dimension does not match. [array]

Даже если размерности соответствуют, индекс не должен быть вне области значений:

contains(a, (4, 4))
Error: Invalid argument. [array]

Пример 7

contains может использоваться, чтобы протестировать, имеет ли область заданный slot:

T := newDomain("T"):  T::index := value:
contains(T, index), contains(T, value)

Нет никакой записи, соответствующей пазу index в T. Следует иметь в виду что синтаксис T::index эквивалентно slot(T, "index" ):

contains(T, "index")

Пример 8

Пользователи могут overloadcontains для их собственных областей. Для рисунка мы создаем новый доменный T и предоставьте его "contains" паз, какие тесты являются набором записей элемента, содержит данное значение idx:

T := newDomain("T"):
T::contains := (e, idx) -> contains({extop(e)}, idx):

Если мы теперь вызываем contains с объектом доменного типа T, стандартная программа паза T::contains вызывается:

e := new(T, 1, 2): contains(e, 2), contains(e, 3)

Параметры

s

Набор

l

Список

t

Массив типа DOM_ARRAY, таблица или область

object

Произвольный объект MuPAD

i

Целое число

Возвращаемые значения

Для наборов, массивов, таблиц, или областей, contains возвращает одно из булевых значений TRUE или FALSE. Для списков возвращаемое значение является неотрицательным целым числом.

Перегруженный

lST

Смотрите также

Функции MuPAD

Для просмотра документации необходимо авторизоваться на сайте