testtype

Синтаксическая проверка типа

Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.

Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.

Синтаксис

testtype(object, T)

Описание

testtype(object, T) проверки, имеет ли объект синтаксически тип T.

Текстовый объект T может быть любой доменный тип, такой как DOM_INT, DOM_EXPR и т.д., строка, как возвращено функциональным type, или Текстовый объект. Последние являются, вероятно, самыми полезными предопределенными значениями для аргумента T.

Примечание

testtype выполняет чисто синтаксическую проверку. Используйте is для семантических свойств принятия во внимание проверок идентификаторов!

Смотрите раздел Algorithms ниже для получения дополнительной информации о перегружающемся механизме.

Примеры

Пример 1

Следующие тесты вызова, является ли первый аргумент выражением. Выражения являются основными объектами доменного типа DOM_EXPR:

testtype(x + y, DOM_EXPR)

type функция отличает выражения. Соответствующая строка типа является допустимым текстовым объектом для testtype:

type(x + y), testtype(x + y, "_plus")

Следующие тесты вызова, является ли первый аргумент целым числом путем запроса, имеет ли он доменный тип DOM_INT:

testtype(7, DOM_INT)

Обратите внимание на то, что testtype выполняет чисто синтаксический тест. Математически, целое число 7 является рациональным числом. Однако доменный тип DOM_RAT не охватывает DOM_INT:

testtype(7, DOM_RAT)

Библиотека типов обеспечивает более гибкие текстовые объекты. Например, Type::Rational представляет объединение DOM_INT и DOM_RAT:

testtype(7, Type::Rational)

Номер 7 совпадает с другими типами также:

testtype(7, Type::PosInt), testtype(7, Type::Prime),
testtype(7, Type::Numeric), testtype(7, Type::Odd)

Пример 2

Подтипы выражений могут быть заданы с помощью символьных строк:

type(f(x)),  type(sin(x))

testtype(sin(x), "function"), testtype(sin(x), "sin"),
testtype(sin(x), "cos")

Пример 3

Мы демонстрируем, как реализовать индивидуально настраиваемый текстовый объект “div3” который должен представлять целочисленные множители 3. Нужно создать новую область с “testtypeDomатрибут:

div3 := newDomain("divisible by 3?"):
div3::testtypeDom := x -> testtype(x/3, Type::Integer):

Через перегрузку, команду testtype(object, div3) вызовы этот паз:

testtype(5, div3), testtype(6, div3), testtype(sin(1), div3)

delete div3:

Параметры

object

Любой объект MuPAD®

T

Текстовый объект

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

TRUE или FALSE.

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

objectT

Алгоритмы

Перегрузка testtype работает можно следующим образом: Во-первых, это проверяется ли domtype(object) = T или type(object) = T содержит. Если так, testtype возвращает TRUE.

Затем метод "testtype" из доменного object::dom вызван аргументами object, T. Если этот метод возвращает результат кроме FAIL, затем testtype возвращает это значение.

Если метод object::dom::testtype не существует или если этот метод возвращает FAIL, затем перегрузка вторым аргументом используется:

  • Если T область, затем метод "testtypeDom" из T вызван аргументами object, T.

  • Если T не область, затем метод "testtypeDom" из T::dom вызван аргументами object, T.

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

Функции MuPAD