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.

Примеры

Пример 1

Следующий пример демонстрирует как 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:

Параметры

b

TRUE или FALSE

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

TRUE или FALSE.

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

Функции MuPAD