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
.