Объявить проверку аргумента функции
arguments
argName1 (dimensions) dataType {validators} = defaultValue
...
argNameN ...
end
arguments (Repeating)
...
end
arguments ... end объявляет входные аргументы для функции. Блок аргументов необязателен. Если включить arguments блок, он должен отображаться перед первой исполняемой строкой функции. Функции могут включать несколько arguments блоки.
Каждый аргумент может иметь одно или несколько ограничений или значение по умолчанию, как показано в следующем синтаксисе:
argName (dimensions) dataType {validators} = defaultValue
- Размер ввода, указанный как список двух или более чисел, разделенных запятыми, например (dimensions)(1,2), (3,5,2), или (1,:). Двоеточие допускает любую длину в этом измерении. не может включать выражения.(dimensions)
Размеры входных данных должны совпадать точно или быть совместимым с размером, указанным (dimensions). Например, (dimensions)(1,:) указывает, что входной вектор должен быть вектором строки 1 на n, но вектор столбца n на 1 совместим. Функция изменяет форму вектора строки, введенного в вектор столбца. Аналогично, размер (2,3) позволяет скалярный ввод, но расширяет ввод до матрицы 2 на 3. Дополнительные сведения см. в разделе Совместимые размеры массивов для основных операций.
- тип данных, указанный как имя класса, например dataTypedouble. Входные данные должны иметь указанный тип или тип, который может быть преобразован в этот тип. Например, функция, определяющая double принимает значения типа single и преобразует их в double.
- Список функций проверки, разделенных запятыми, например: {validators}mustBeNumeric и mustBeScalarOrEmpty, заключён в фигурные скобки. Ошибка функций проверки, если входные аргументы не соответствуют их условиям. В отличие от этого, , функции проверки не изменяют входные аргументы. Список функций проверки см. в разделе Функции проверки аргументов.dataType
- Значения по умолчанию должны соответствовать указанному размеру, типу и правилам проверки. Значением по умолчанию также может быть выражение. Указание значения по умолчанию делает аргумент необязательным. Необязательные аргументы должны располагаться после обязательных аргументов в сигнатуре функции и в defaultValuearguments блок.
Для аргументов «имя-значение» использует форму arg, где nv.name является именем структуры в сигнатуре функции и nv - имя аргумента в блоке аргументов. Например, определите функцию, которая принимает аргументы «имя-значение», используя структуру с именем nameoptions.
y = myFunction(x,options)
В блоке аргументов укажите имена аргументов «имя-значение» в качестве полей:
arguments
x
options.Name1
options.Name2
end Дополнительные сведения об использовании arguments блоки в целом, см. аргументы Блок синтаксис.
arguments (Repeating) ... end объявляет повторяющиеся аргументы.
Например, при создании функции с именем myplot с повторяющимися аргументами X, Y, и style, функция принимает несколько наборов этих трех аргументов, таких как myplot(x1,y1,style1,x2,y2,style2). MATLAB ® создает массив ячеек, содержащий все значения, переданные для этого аргумента.
Функции могут включать только один повторяющийся блок аргументов. Если функция включает как повторяющиеся аргументы, так и аргументы значения имени, объявите аргументы значения имени в собственном отдельном блоке аргументов после повторяющегося блока аргументов.
Дополнительные сведения о повторяющихся аргументах см. в разделе Повторяющиеся аргументы.
Блоки аргументов не поддерживаются во вложенных функциях, абстрактных методах или методах деструктора дескрипторов классов.
Использование ограничений типа данных может привести к неявному преобразованию входных аргументов. Например:
function y = myFunction(inputArg1)
arguments
inputArg1 (1,1) double
end
..."123" в качестве входного аргумента MATLAB преобразует строку в числовое значение 123 типа double.Функции проверки никоим образом не изменяют входные значения, поэтому во избежание преобразования типа данных для ограничения ввода используйте одну или несколько функций средства проверки вместо типа данных. Например:
Чтобы избежать преобразования строк в числовые значения, используйте mustBeA, mustBeFloat, или mustBeNumeric.
Чтобы избежать преобразования числовых значений в строки, используйте mustBeText, mustBeTextScalar, или mustBeNonZeroLengthText.
Чтобы избежать преобразования размеров, используйте mustBeVector или mustBeScalarOrEmpty.