当您使用连接或下标赋值创建或修改对象数组时,MATLAB®尝试转换不同的类型以符合数组的类。
为了执行转换,MATLAB尝试调用要转换的类定义的转换器方法。转换器方法与目标类具有相同的名称。例如,如果一个类定义了一个名为双
,此方法将类的对象转换为类的对象双
.
如果不存在转换器,MATLAB会将要转换的对象传递给目标类的构造函数。
连接和下标赋值都可以使MATLAB应用这种类转换机制。转换可能成功,如果转换不可能,则可能导致错误。
在连接操作中,主导对象决定结果数组的类。MATLAB确定了主导对象如下:
用户定义的类比内置类占优势,比如双
.
如果任意两个对象之间没有确定的支配关系,则最左边的对象支配
例如,在语句中C = [A, B]
,如果一个
是主导对象,MATLAB试图转换B
给班级一个
.
在下标赋值中,赋值语句的左侧定义数组的类。如果你给数组元素赋值时,右侧与左侧是不同的类,MATLAB会尝试转换为左侧的类。
例如,将对象赋值为ClassB
到数组的一个元素一个
需要转换。
一个= ClassA;B = ClassB;(2) = B;
MATLAB首先查找由源对象类定义的转换器方法B
.此转换器方法必须具有名称ClassA
.下标赋值实际上是对定义的转换器的调用ClassB
:
(2) = B.ClassA% ClassB的调用方法
如果不存在转换器方法,MATLAB将源对象传递给目标类构造函数:
(2) = ClassA (B)%调用ClassA构造函数