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