hastypeПротестируйте, если объект заданного типа происходит в другом объекте
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.
hastype(object, T, <inspect>)
hastype(object, T) тесты, если объект типа T происходит синтаксически в object.
hastype(object, T) тесты, если подобъект s из типа T происходит в object, т.е. таким образом, что testtype(s, T) возвращает TRUE.
Спецификатор типа T может быть любой доменный тип, такой как DOM_INT, DOM_EXPR и т.д., строка, как возвращено функциональным type, или Текстовый объект. Последние являются, вероятно, самыми полезными предопределенными значениями для аргумента T.
Если T не допустимый спецификатор типа, затем hastype возвращает FALSE.
Смотрите пример 1.
Если object выражение, затем hastype(object, T) тесты, ли object содержит подвыражение типа T; смотрите Пример 1.
Если object контейнер, затем hastype проверки, ли подобъект типа T происходит в записи object; смотрите Пример 4.
Если второй аргумент является списком или набором, hastype проверки, ли подобъект одного из типов в T происходит в object. Смотрите пример 1.
hastype работает рекурсивным способом и убываниями в следующие объекты: выражения, массивы, hfarrays, списки, наборы и таблицы. Смотрите Пример 4. hastype не продвигается в другие основные области, такие как рациональные числа, комплексные числа, полиномы или процедуры. Смотрите Пример 2.
Если третий аргумент inspect присутствует, затем hastype также шаги рекурсивно в подобъекты доменных типов, данных в inspect. Смотрите пример 2.
В этом примере мы сначала тестируем, если данное выражение имеет подвыражение типа DOM_FLOAT:
hastype(1.0 + x, DOM_FLOAT)
![]()
hastype(1 + x, DOM_FLOAT)
![]()
Мы можем также протестировать, если выражения содержат подвыражение одного из двух типов DOM_FLOAT или DOM_INT:
hastype(1.0 + x, {DOM_FLOAT, DOM_INT})![]()
В то время как первый из следующих двух тестов возвращает FALSE, начиная с tan не допустимый спецификатор типа, второй тест дает к TRUE, поскольку данное выражение содержит подвыражение типа "tan":
hastype(sin(tan(x) + 1/exp(1 - x)), tan), hastype(sin(tan(x) + 1/exp(1 - x)), "tan")
![]()
Можно также использовать спецификаторы типа от Библиотеки типов:
hastype([-1, 10, -5, 2*I], Type::PosInt)
![]()
Мы демонстрируем использование дополнительного третьего аргумента. Мы хотим проверять, содержит ли процедура подвыражение типа "float". По умолчанию, hastype не убывает рекурсивно в процедуру:
f := x -> float(x) + 3.0: hastype(f, "float")
![]()
Можно использовать третий аргумент, чтобы запросить контроль процедур явным образом:
hastype(f, "float", {DOM_PROC})![]()
Кроме того, по умолчанию, hastype не убывает рекурсивно в основные области DOM_COMPLEX и DOM_RAT:
hastype(1 + I, DOM_INT), hastype(2/3, DOM_INT)
![]()
Для того, чтобы смотреть эти типы данных, нужно использовать третий аргумент:
hastype(1 + I, DOM_INT, {DOM_COMPLEX}),
hastype(2/3, DOM_INT, {DOM_RAT})![]()
Поскольку матрицы обладают пазом enableMaprec, hastype автоматически смотрит их записи.
A := matrix([[1, 1], [1, 0]]): hastype(A, DOM_INT)
![]()
Также возможно смотреть элементы других областей с помощью третьего аргумента. Когда пример позволил нам задать сочетание и попросить подвыражение целого числа типа:
G:= Dom::SymmetricGroup(4):
perm:= G([2,4, 3, 1]):
hastype(perm, DOM_INT), hastype(perm, DOM_INT, {G})![]()
Мы демонстрируем как hastype эффекты на контейнерных объектах. Давайте сначала подчеркнем таблицы:
hastype(table(1 = a), DOM_INT), hastype(table(a = 1), DOM_INT)
![]()
Как показано, hastype не смотрит индексы таблицы, но проверяет рекурсивно, происходит ли подобъект данного типа в записи. Это также верно для массивов, hfarrays, списков и наборов:
hastype(array(1..4, [1, 2, 3, 4]), DOM_INT),
hastype(hfarray(1..3, [1.0, 2.0, 3.0*I]), DOM_COMPLEX),
hastype([1, 2, 3, 4], DOM_INT),
hastype({1, 2, 3, 4}, DOM_INT),
hastype([[a, [1]], b, c], DOM_INT)![]()
hastype может только работать синтаксически, т.е. свойства не учтены:
assume(a,Type::Integer): hastype([a, b], Type::Integer), hastype([a, b], DOM_INT)
![]()
delete a:
|
Произвольный объект MuPAD® |
| |
|
object