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

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

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

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

Задайте функцию в файле с именем checkme.m, который принимает до трех входных параметров: a, b и 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.

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

|

Для просмотра документации необходимо авторизоваться на сайте