testargs
Решите, должны ли аргументы процедуры быть протестированы
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.
testargs()
testargs(b
)
В процедуре testargs
указывает, должна ли процедура проверять свои аргументы.
Проверка входных параметров процедуры может быть дорогостоящей. Поэтому большинство функций библиотек MuPAD® реализовано согласно следующей философии:
Если процедура называется на интерактивном уровне, т.е. если его параметры предоставляются в интерактивном режиме пользователем, то параметры должны проверяться. Если входные параметры не выполняют зарегистрированную спецификацию процедуры, то соответствующие сообщения об ошибке должны быть возвращены, чтобы уведомить пользователя относительно неправильного использования.
Если процедура вызвана другой процедурой, то никакая проверка параметров не должна быть выполнена, чтобы повысить эффективность. Процедура вызова, как предполагается, убеждается, что передаются соответствующие параметры.
testargs
является инструментом, чтобы проверять, должны ли аргументы быть протестированы: названный в теле процедуры, testargs()
возвращает TRUE
, если процедура была названа на интерактивном уровне. В противном случае это возвращает FALSE
.
testargs
имеет два режима. В “стандартном режиме” его функциональность как описана выше. В “режиме проверки аргументов”, вызов testargs()
всегда возвращает TRUE
. Это поддерживает отладку процедур: любая функция с помощью testargs
проверяет свои параметры и возвращает полезные сообщения об ошибке, если названо несоответствующим способом.
Вызов, который testargs(TRUE)
переключает на “режим проверки аргументов”, т.е. тестирование параметра, включается глобально.
Вызов, который testargs(FALSE)
переключает на “стандартный режим”, т.е. тестирование параметра, используется только на интерактивном уровне.
Вызов testargs(b)
возвращает ранее значение набора.
testargs
не должен использоваться, чтобы изменить поведение функции кроме выполнения проверок типа, поскольку пользователь, возможно, переключился на “режим проверки аргументов”.
Проверкой входных параметров процедуры можно также управлять с функциональным Pref::typeCheck
.
Следующий пример демонстрирует, как testargs
должен использоваться в процедуре. Функциональный p
должен сгенерировать последовательность n
, обнуляет; его аргумент должен быть положительным целым числом:
p := proc(n) begin if testargs() then if not testtype(n, Type::PosInt) then error("expecting a positive integer"); end_if; end_if; return(0 $ n) end_proc:
Его аргумент проверяется, когда p
называется на интерактивном уровне:
p(13/2)
Error: expecting a positive integer [p]
Вызов p
из процедуры с несоответствующим параметром не вызывает тестирование аргумента. Следующий странный вывод вызывается попыткой оценить 0 $ n
:
f := proc(n) begin p(n) end_proc: f(13/2)
Мы включаем “режим проверки аргументов” testargs
:
testargs(TRUE):
Теперь также неинтерактивный вызов p
производит информативное сообщение об ошибке:
f(13/2)
Error: expecting a positive integer [p]
Мы моемся, восстанавливая “стандартный режим” testargs
:
testargs(FALSE): delete f, g: