Проверьте, что входные параметры к вашей функции соответствуют набору требований с помощью функции 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.