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