Проверка Входных параметров функции с validateattributes

Проверьте, что входные параметры к вашей функции соответствуют набору требований с помощью validateattributes функция.

validateattributes требует, чтобы вы передали переменную, чтобы проверять и поддерживаемые типы данных на ту переменную. Опционально, передайте набор атрибутов, которые описывают допустимые размерности или значения.

Проверка типа данных и других атрибутов

Задайте функцию в файле с именем checkme.m это принимает до трех входных параметров: aB, и c. Проверяйте ли:

  • a двумерный массив положительных значений с двойной точностью.

  • b содержит 100 числовых значений в массиве с 10 столбцами.

  • c непустой вектор символов или массив ячеек.

function checkme(a,b,c)

validateattributes(a,{'double'},{'positive','2d'})
validateattributes(b,{'numeric'},{'numel',100,'ncols',10})
validateattributes(c,{'char','cell'},{'nonempty'})

disp('All inputs are ok.')

Фигурные скобки {} укажите, что набор типов данных и набор дополнительных атрибутов находятся в массивах ячеек. Массивы ячеек позволяют вам хранить комбинации текста и числовых данных или векторов символов различных длин, в одной переменной.

Вызовите checkme с допустимыми входными параметрами.

checkme(pi,rand(5,10,2),'text')
All inputs are ok.

Скалярное значение pi двумерно потому что size(pi) = [1,1].

Вызовите checkme с недопустимыми входными параметрами. validateattributes функция выдает ошибку для первого входа, который приводит к сбою валидацию и checkme обработка остановок.

checkme(-4)
Error using checkme (line 3)
Expected input to be positive.
checkme(pi,rand(3,4,2))
Error using checkme (line 4)
Expected input to be an array with number of elements equal to 100.
checkme(pi,rand(5,10,2),struct)
Error using checkme (line 5)
Expected input to be one of these types:

  char, cell

Instead its type was struct.

Сообщения об ошибке по умолчанию используют общий термин input относиться к аргументу, который привел валидацию к сбою. То, когда вы используете сообщение об ошибке по умолчанию, единственный способ определить, которые вводят отказавший, должно просмотреть заданную строку кода в checkme.

Добавление входного имени и положения к ошибкам

Задайте функцию в файле с именем checkdetails.m это выполняет ту же валидацию как checkme, но добавляет детали о входном имени и положении к сообщениям об ошибке.

function checkdetails(a,b,c)

validateattributes(a,{'double'},{'positive','2d'},'','First',1)
validateattributes(b,{'numeric'},{'numel',100,'ncols',10},'','Second',2)
validateattributes(c,{'char'},{'nonempty'},'','Third',3)

disp('All inputs are ok.')

Пустой символьный вектор '' для четвертого входа к validateattributes заполнитель для дополнительного имени функции. Вы не должны задавать имя функции, потому что это уже появляется в сообщении об ошибке. Задайте имя функции, когда это необходимо, чтобы включать его в ошибочный идентификатор для дополнительной обработки ошибок.

Вызовите checkdetails с недопустимыми входными параметрами.

checkdetails(-4)
Error using checkdetails (line 3)
Expected input number 1, First, to be positive.
checkdetails(pi,rand(3,4,2))
Error using checkdetails (line 4)
Expected input number 2, Second, to be an array with
number of elements equal to 100.

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

|