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

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