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.

Примечание

hastype только ищет подобъекты, которые синтаксически имеют тип T. Свойства идентификаторов установлены через assume не учтены; смотрите Пример 4.

Примеры

Пример 1

В этом примере мы сначала тестируем, если данное выражение имеет подвыражение типа 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)

Пример 2

Мы демонстрируем использование дополнительного третьего аргумента. Мы хотим проверять, содержит ли процедура подвыражение типа "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})

Пример 3

Поскольку матрицы обладают пазом 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})

Пример 4

Мы демонстрируем как 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:

Параметры

object

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

T

Спецификатор типа, или набор или список спецификаторов типа

inspect

Набор доменных типов

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

Любой TRUE или FALSE.

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

object

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

Функции MuPAD