Проверка Входных параметров функции с 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.

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

|

Была ли эта тема полезной?