主要内容

属性类和尺寸验证

属性类和大小

MATLAB®适用于任何类和尺寸验证之前为属性定义调用验证功能。分配到一个属性,它定义了大小或类验证类似于MATLAB对象数组赋值。MATLAB可以应用类和大小转换的右侧任务满足验证类和大小。

有关更多信息,请参见订单的验证属性验证功能

财产规模验证

指定属性的大小作为行,列,和额外的维度属性名。

classdef MyClass属性道具(dim1, dim2,…) = defaultValue结束的结束

分配和规模验证

这个类定义的大小位置属性1×3。任何分配给该属性值必须符合尺寸或大小必须转换。

classdefValidateProps属性位置(1、3)结束结束

通过MATLAB,分配的隐含的默认值(0 0 0),符合指定的大小:

一个= ValidateProps
一个= ValidateProps属性:位置:[0 0 0]

MATLAB应用标量扩展当你分配一个标量位置财产。

一个= ValidateProps;一个。位置= 1
一个= ValidateProps属性:位置:(1 1 1)

MATLAB将列行匹配大小规格:

坳= (1,1,1)
坳= 1 1 1
一个。位置=坳
一个= ValidateProps属性:位置:(1 1 1)

结肠的大小规格

冒号大小规范中显示相应的尺寸可以有任意长度。例如,您可以指定任何长度的值标签房地产在这个类。

classdefValidateProps属性标签(:1)结束结束
一个= ValidateProps;一个。标签=“点击开始”
= ValidateProps属性:一个标签:“点击开始”

任务属性定义尺寸验证遵循相同的规则,相当于索引数组赋值。多维数组的索引信息的行为,明白了兼容数组大小的基本操作

房地产类验证

定义类的属性可以减少需要测试的值分配给属性在代码中。一般来说,价值分配的财产必须指定的类或可兑换指定的类。一个例外是子类。如果你指定一个用户定义的类作为验证的一部分,该类的子类通过验证没有错误,但他们并没有转换。

您可以指定每个属性只有一个类。使用验证函数如mustBeNumericmustBeInteger限制类的属性更广泛的范畴。验证函数的更多信息,请参阅属性验证功能

您可以使用任何MATLAB类或外部定义的类,由MATLAB支持,除了Java金宝app®和COM类。

地方类的属性的名称定义块后,属性名称和可选的大小规格。

classdef MyClass属性道具ClassName = defaultValue结束的结束

如果你不指定一个默认值,MATLAB分配一个空的对象指定的类的属性。如果你定义一个大小和一个类,MATLAB试图创建一个默认值的属性满足大小和类要求。

MATLAB创建默认值通过调用类的构造函数没有参数。类必须有一个构造函数,该函数返回一个指定大小的对象调用时没有输入参数或您必须指定一个默认值属性满足属性大小限制。有关更多信息,请参见每个大小和类的默认值

使用类验证

PropsWithClass类定义了两个属性类定义:

  • 数量——价值观必须是类或可转换

  • 今天——价值观必须是类字符串或可转换字符串。默认值为当前日期,返回的datetime函数。

classdefPropsWithClass属性数量今天字符串= datetime (“今天”)结束结束

创建一个对象PropsWithClass类。

p = PropsWithClass
p = PropsWithClass属性:号码:今天[]:“09 - 2022年6月——”

MATLAB从任何兼容的类来执行转换属性类。例如,分配一个unint8价值数量财产。

p。数量= uint8 (5);disp(类(p.Number))
ans =双

因为uint8可以转化为价值,你可以分配uint8价值数量财产。

将一个不相容的值分配给一个属性,使用类验证导致一个错误。

p。数量= datetime (“今天”);
错误设定属性的数量类“PropsWithClass”:必须双或可转换双值。

用户定义的类进行验证

您可以定义一个类来控制分配给一个属性的值。枚举类允许用户设置属性值特征向量或字符串标量与不精确的名称匹配。

例如,假设有一个类代表一个三速机械泵。您可以定义一个枚举类代表了三个流率。

classdef流量< int32枚举低(10)中(50)高(100)结束结束

类有一个方法返回当前加仑每分钟的流量。定义速度房地产作为一个流量类。

classdef属性速度流量结束方法函数getGPM (p)如果isempty (p.Speed)流量= 0;其他的流量= int32 (p.Speed);结束流(流量:%我流量\ n”、流量);结束结束结束

用户可以设置速度使用不精确的文本属性。

p =泵;p。速度=“米”
属性:p =泵速度:媒介

的数值是可用的属性。

getGPM (p)
流量是:50流量

枚举类的信息,请参阅定义枚举类

整数类验证

MATLAB支金宝app持多个整数类(见整数)。然而,限制房地产整数类会导致整数溢出。得到的值会浸透在整数的最大值或最小值的范围内。

当出现整数溢出,这是分配给一个属性的值可以是一个值不同的值赋值语句的右边。

例如,假设你想限制一个标量属性值uint8

classdefIntProperty属性价值(1,1)uint8结束结束

分配一个数值价值财产有效的数值uint8,但不会导致一个错误超出范围的值。

一个= IntProperty;一个。值= -10;disp (a.Value)
0

赋值的价值属性是相当于一个数组的索引分配。如果指定值的值的范围uint8可以表示,MATLAB设置值最接近的值,它可以代表使用uint8

一个= uint8.empty;(1)= -10
一个= uint8 0

为了避免潜在的整数溢出,使用验证函数的组合限定值到目标范围,而不是一个整数类。

classdefIntProperty属性价值(1,1){mustBeInteger mustBeNonnegative,mustBeLessThan(价值256美元)}结束结束

因为没有指定值的转换uint8类,验证器捕获的范围值和适当抛出一个错误。

一个= IntProperty;一个。值= -10;
错误设置属性的“价值”类“IntProperty”:值必须是负的。

每个大小和类的默认值

任何默认属性值指定的类定义必须符合指定的验证。

隐式的默认值

MATLAB隐式定义了一个默认值,如果您不指定一个类定义的默认值。这个表显示的大小和类确定隐MATLAB类的默认值。

大小 隐式默认由MATLAB

(m, n)

任何数字

m×n的数组的指定类的0。

(m,:)(n):

任何类

m-by-0或0-by-n指定的类。

(m, n)

字符

m×n的char数组的空间。

(m, n)

细胞

m×n的单元阵列,每个单元格包含0-by-0翻倍。

(m, n)

结构体

m×n的结构体

(m, n)

字符串

m×n的字符串

(m, n)

枚举类

第一个枚举成员在类中定义的。

(1,1)

function_handle

运行时错误——在类中定义一个默认值。

确定隐含默认值为非零和明确的尺寸规格,MATLAB调用默认的类构造函数和构建一个指定大小的数组使用构造函数调用返回的实例。如果类不支持一个默认的构造函数(也就是说,一金宝app个构造函数调用不带参数),然后用MATLAB抛出一个错误当实例化类包含验证。

如果指定的大小有任何零个或无限制(:)维度,MATLAB创建一个默认值与不受限制的一个空数组维度设置为0。

对于异构数组,MATLAB调用matlab.mixin.Heterogeneous.getDefaultScalarElement方法来获取默认对象。

相关的话题