在属性块中,可以使用属性验证。属性验证使您能够对每个属性值(包括大小和类)设置一个或多个限制。您还可以为每个属性定义默认值。属性验证的一般语法是:
properties (attributes)
propName1 (dimensions) class {validators} = defaultValue
(dimensions) - 属性值的大小,指定为圆括号中包含两个或更多数字的以逗号分隔的列表,如 (1,2) 或 (1,:)。冒号表示该维度可以包含任意长度。值的维度必须与 (dimensions) 完全匹配或兼容。请参阅基本运算的兼容数组大小了解详细信息。(dimensions) 不能包含表达式。
class - 属性值的类,指定为类的名称,例如 double。该值必须为指定的类或可以转换的类。例如,指定 double 的属性接受 single 类型的值并将它们转换为 double。除了 MATLAB 中的可用类,您还可以使用自己的类作为属性验证器。对于用户定义的类,属性验证允许指定的 class 的子类通过而不报错,但不会将该子类转换为超类。
{validators} - 验证函数,指定为用花括号括起来的以逗号分隔的列表,如 mustBePositive 和 mustBeScalarOrEmpty。与 class 不同,验证函数不修改属性值。当属性值与其条件不匹配时,验证函数会报错。有关验证函数的列表,请参阅属性验证函数。您也可以定义自己的验证函数。
defaultValue - 默认属性值必须符合指定的大小、类和验证规则。默认值也可以是表达式。有关 MATLAB 如何计算默认值表达式的详细信息,请参阅 使用默认值定义属性。
下面的类定义一个属性。属性块未定义显式特性,这等效于定义一个公共属性块。MyPublicData 还必须为由正双精度值组成的向量,其默认值为 [1 1 1]。
并非所有验证选项都必须同时使用,同一属性块中的不同属性可以使用不同验证器组合。在此示例中,RestrictedByClass 属性仅使用类验证,而 RestrictedByFunction 使用验证函数并赋予默认值。
有关详细信息,请参阅 Property Class and Size Validation 和 属性验证函数。