arguments
语法
argumentsargName1 (dimensions) class {validators} = defaultValue
...argNameN ...
end arguments (Repeating)argName1 (dimensions) class {validators} = defaultValue
...argNameN ...
end arguments (Output)argName1 (dimensions) class {validators}
...argNameN ...
end arguments (Output,Repeating)argName (dimensions) class {validators}
end
说明
输入参量块
arguments ... end
声明函数的输入参量。参量块是可选的。如果包含一个或多个 arguments
块,它们必须出现在函数的第一个可执行代码行之前。MATLAB® 将任何未显式标记为 Input
或 Output
的参量块视为输入块。
每个参量可以有一个或多个约束或一个默认值,如以下语法所示:
argName (dimensions) class {validators} = defaultValue
- 输入大小,指定为包含两个或多个数值的以逗号分隔的列表,如(dimensions)
(1,2)
、(3,5,2)
或(1,:)
。冒号表示该维度可以包含任意长度。
不能包含表达式。(dimensions)
输入的维度必须与
完全匹配,或与(dimensions)
指定的大小兼容。例如,(dimensions)
(1,:)
指定输入必须为 1×n 行向量,但 n×1 列向量是兼容的。该函数将行向量输入重构为列向量。同样,大小为(2,3)
的值允许标量输入,但它将输入扩展为 2×3 矩阵。有关详细信息,请参阅 基本运算的兼容数组大小。
- 按名称指定的类或 MATLAB 数据类型,如class
double
。输入必须为指定的类型或可以转换为该类型的类型。例如,指定double
的函数接受single
类的值并将它们转换为double
。有关转换的详细信息,请参阅Implicit Class Conversion。
- 以逗号分隔的验证函数(如{validators}
mustBeNumeric
和mustBeScalarOrEmpty
)列表,用花括号括起来。当输入参量与其条件不匹配时,验证函数会出错。与
不同,验证函数不修改输入参量。有关验证函数的列表,请参阅 参量验证函数。class
- 默认值必须符合指定的大小、类型和验证规则。默认值也可以是表达式。指定默认值会使该参量成为可选参量。可选参量必须位于函数签名中和defaultValue
arguments
块中的必需参量后。
对于名称-值参量,
使用 arg
的形式,其中 nv.name
是函数签名中的结构体名称,nv
是参量块中的参量名称。例如,使用名为 name
options
的结构体定义接受名称-值参量的函数。
y = myFunction(x,options)
在参量块中,将名称-值参量的名称指定为字段:
arguments x options.Name1 options.Name2 end
有关通常情况下使用 arguments
块的详细信息,请参阅 arguments 代码块语法。
输出参量块
arguments (Output) ... end
声明函数的输出参量。输出参量块是可选的。如果包含一个或多个输出 arguments
块,它们必须出现在所有输入块之后,函数的第一个可执行代码行之前。当在函数中同时包含输入和输出块时,为了提高可读性,建议显式包含 (Input)
和 (Output)
属性。请参阅使用参量验证重复输出中的示例。(从 R2022b 开始)
与输入参量一样,输出参量也可以有一个或多个约束,如以下语法所示:
argName (dimensions) class {validators}
有关其他详细信息,请参阅 arguments ... end
的描述。与输入参量不同,输出参量无法定义默认值,应用于输出参量的验证函数无法引用早期的输出参量。
arguments (Output,Repeating) ... end
为函数声明重复输出参量。可以对重复输出参量使用参量验证,但每个函数只能定义一个重复输出参量。varargout
可以出现在重复输出参量块中,只要它是唯一的输出参量即可。(从 R2022b 开始)
示例
局限性
嵌套函数、抽象方法或句柄类析构函数方法不支持参量块。
详细信息
提示
使用数据类型限制会导致输入参量的隐式转换。例如:
对于此函数,如果将字符串function y = myFunction(inputArg1) arguments inputArg1 (1,1) double end ...
"123"
作为输入参量传递,则 MATLAB 会将字符串转换为double
类型的数值123
。验证函数不会以任何方式更改输入值,因此为了避免数据类型转换,请使用一个或多个验证器函数而不是数据类型来限制输入。例如:
要避免将字符串转换为数值,请使用
mustBeA
、mustBeFloat
或mustBeNumeric
。要避免将数值转换为字符串,请使用
mustBeText
、mustBeTextScalar
或mustBeNonZeroLengthText
。要避免大小转换,请使用
mustBeVector
或mustBeScalarOrEmpty
。
MATLAB 能够根据参量块中包含的信息为具有
arguments
块的函数提供代码自动填充和建议。无需functionSignatures.json
文件即可获得此信息。有关自定义代码建议和自动填充的详细信息,请参阅自定义代码建议和自动填充。