用途:在编写或审查 MATLAB 函数的 arguments 块时,正确处理尺寸、类、重复参数、名称-值参数与构造器属性导入,并辅助从 inputParser 或 validateattributes 迁移。适用信号:需要写 arguments 块、使用 arguments (Repeating)、编写接受名称-值参数的类构造器、审查函数签名的隐式转换风险、在类规格与 mustBeA 等验证器之间做选择。
主要能力与要点:尺寸规格会重塑而非拒绝,例如 (1,:) 会把列向量 [1;2;3] 转为行向量而不报错,若要拒绝列向量应使用 mustBeRow 等验证器;类规格会尝试隐式转换而非拒绝,如 x double 会把 'hello' 转成 ASCII 码、把 single 转为 double,要拒绝应使用 mustBeA、mustBeFloat、mustBeNumeric 等验证器;数值验证器不会拒绝复数,1+2i 可通过 mustBeNumeric、mustBeFinite、mustBeInteger,必要时补充 mustBeReal;计算型默认值基于实际传入值而非声明的默认值;~ 是合法占位符,可保留在 arguments 块中且无需类型规格。
用法模式:arguments (Repeating) 用于可变组参数,组内变量在函数体中变为元胞数组(用 x{i} 访问),不能有默认值;R2022b 起可用 arguments (Output) 与 (Output, Repeating) 验证输出参数,后者只允许声明一个名称;.?ClassName 可在构造器中直接导入类的可设置属性作为名称-值参数,避免重复声明;namedargs2cell 可把已验证结构体转回名称-值元胞数组用于转发。多个 arguments 块允许共存,参数类别整体顺序须为必需→可选→重复→名称-值,越界会触发如 MATLAB:functionValidation:RequiredAfterOptional 等解析错误。
限制:输出参数验证需要 R2022b 及以上,输入验证从 R2019b 起可用;基础 MATLAB 编程、App 构建、单元测试、与参数验证无关的 OOP 类设计不适用;.mlx 和 .mlapp 是二进制 ZIP 容器,不应解压或做结构性编辑,需先在 MATLAB 中导出为 .m 再改;未知的 Name=Value 可能被静默吞掉,.?ClassName 对无可设置属性的类(如 onCleanup)会导入零个名称-值参数,属语法有效但无实际作用。
注意:以上内容来自公开技能说明,具体版本行为与错误标识以实际 MATLAB 运行为准。