arguments
声明函数参量验证
语法
arguments
argName1 (dimensions) class {validators} = defaultValue
...
argNameN ...
end
arguments (Repeating)
argName1 (dimensions) class {validators}
...
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 数据类型,如classdouble。输入必须为指定的类型或可以转换为该类型的类型。例如,指定double的函数接受single类的值并将它们转换为double。有关转换的详细信息,请参阅Implicit Class Conversion。- 以逗号分隔的验证函数(如{validators}mustBeNumeric和mustBeScalarOrEmpty)列表,用花括号括起来。当输入参量与其条件不匹配时,验证函数会出错。与不同,验证函数不修改输入参量。有关验证函数的列表,请参阅 参量验证函数。class- 默认值必须符合指定的大小、类型和验证规则。默认值也可以是表达式。指定默认值会使该参量成为可选参量。可选参量必须位于函数签名中和defaultValuearguments块中的必需参量后。
对于名称-值参量, 使用 arg 的形式,其中 nv.name 是函数签名中的结构体名称,nv 是参量块中的参量名称。例如,使用名为 nameoptions 的结构体定义接受名称-值参量的函数。
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文件即可获得此信息。有关自定义代码建议和自动填充的详细信息,请参阅自定义代码建议和自动填充。


