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.

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

object, T

Алгоритмы

Перегрузка 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