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 ниже для получения дополнительной информации о перегружающемся механизме.
Следующие тесты вызова, является ли первый аргумент выражением. Выражения являются основными объектами доменного типа 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)
Подтипы выражений могут быть заданы с помощью символьных строк:
type(f(x)), type(sin(x))
testtype(sin(x), "function"), testtype(sin(x), "sin"), testtype(sin(x), "cos")
Мы демонстрируем, как реализовать индивидуально настраиваемый текстовый объект “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:
|
Любой объект MuPAD® |
|
Текстовый объект |
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
.