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.
contains(t, object) возвращает TRUE, если массив, таблица или доменный t имеют запись, соответствующую индексу object. В противном случае это возвращает FALSE. Cf. Пример 6.
contains может использоваться, чтобы протестировать, если набор содержит данный элемент:
contains({a, b, c}, a), contains({a, b, c}, 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)![]()
contains не убывает рекурсивно в операнды его первого аргумента. В следующем примере c не является элементом набора, и поэтому FALSE возвращен:
contains({a, b, c + d}, c)![]()
Если вы хотите протестировать, содержится ли данное выражение где-нибудь в сложном выражении, используйте has:
has({a, b, c + d}, c)![]()
contains применился к list, возвращает положение заданного объекта в списке:
contains([a, b, c], b)
![]()
Если список не содержит объект, 0 возвращен:
contains([a, b, c], d)
![]()
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)
![]()
Для таблиц 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]
contains может использоваться, чтобы протестировать, имеет ли область заданный slot:
T := newDomain("T"): T::index := value:
contains(T, index), contains(T, value)![]()
Нет никакой записи, соответствующей слоту index в T. Следует иметь в виду, что синтаксис T::index эквивалентен slot(T, "index" ):
contains(T, "index")
![]()
Пользователи могут 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)
![]()
| |
| |
| |
|
Произвольный объект MuPAD |
|
Для наборов, массивов, таблиц или областей, contains возвращает одно из булевых значений TRUE или FALSE. Для списков возвращаемое значение является неотрицательным целым числом.
l, s, t