Объявить валидацию аргумента функции
argumentsargName1 (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)
Размерности входов должны совпадать
точно или быть compatible с размером, заданным (dimensions)
. Для примера, (dimensions)
(1,:)
задает, что входной параметр должен быть вектором-строкой n 1 байт, но вектор-столбец n -by-1 совместим. Функция изменяет форму вектора-строки входа на вектор-столбец. Точно так же размер (2,3)
позволяет скалярный вход, но он расширяет вход до матрицы 2 на 3. Дополнительные сведения см. в разделе «Совместимые размеры массивов для основных Операций».
- Тип данных, заданный как имя класса, например dataType
double
. Входной вход должен быть заданным типом или типом, который может быть преобразован в этот тип. Для примера - функция, которая задает double
принимает значения типа single
и преобразует их в double
.
- Разделенный запятыми список функций валидации, таких как {validators}
mustBeNumeric
и mustBeScalarOrEmpty
, заключенный в фигурные кронштейны. Ошибка функций валидации, когда входные параметры не соответствуют их условиям. В отличие от
, функции валидации не изменяют входные параметры. Список функций валидации см. в разделе Функции валидации аргументов.dataType
- Значения по умолчанию должны соответствовать указанному размеру, типу и правилам валидации. Значение по умолчанию также может быть выражением. Установка значения по умолчанию делает аргумент необязательным. Необязательные аргументы должны располагаться после требуемых аргументов в сигнатуре функции и в defaultValue
arguments
блок.
Для аргументов имя-значение,
использует форму arg
, где nv.name
- имя структуры в сигнатуре функции и nv
- имя аргумента в блоке аргументов. Например, задайте функцию, которая принимает аргументы имя-значение с помощью структуры с именем name
options
.
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® создает массив ячеек, содержащий все значения, переданные для этого аргумента.
Функции могут включать только один повторяющийся блок аргументов. Если функция включает как повторяющиеся аргументы, так и аргументы имя-значение, объявите аргументы имя-значение в своем собственном, отдельном блоке аргументов после блока повторяющихся аргументов.
Дополнительные сведения о повторении аргументов см. в разделе Повторение аргументов.
Блоки аргументов не поддерживаются во вложенных функциях, абстрактных методах или классе Handle методах деструктора.
Использование ограничений типа данных может привести к неявному преобразованию входных параметров. Для примера:
function y = myFunction(inputArg1) arguments inputArg1 (1,1) double end ...
"123"
как входной параметр, MATLAB преобразует строку в числовое значение 123
типа double
.Функции валидации никоим образом не изменяют входные значения, поэтому, чтобы избежать преобразования типа данных, используйте одну или несколько функций валидатора вместо типа данных, чтобы ограничить вход. Для примера:
Чтобы избежать преобразования строк в числовые значения, используйте mustBeA
, mustBeFloat
, или mustBeNumeric
.
Чтобы избежать преобразования числовых значений в строки, используйте mustBeText
, mustBeTextScalar
, или mustBeNonZeroLengthText
.
Чтобы избежать преобразования размера, используйте mustBeVector
или mustBeScalarOrEmpty
.