实现属性的设置/获取接口
标准设置/获取接口
一些MATLAB®对象(如图形对象)实现基于的接口集
和得到
功能。这些函数允许在单个函数调用中访问对象数组的多个属性。
你可以加上集
和得到
通过从这些类中派生出一个类来给你的类添加功能:
matlab.mixin.SetGet
-当您希望支持不区分大小写的部分属性名称万博1manbetx匹配时使用。源于matlab.mixin.SetGet
不影响使用点表示法引用属性所需的确切属性名称。matlab.mixin.SetGetExactNames
-仅支持区分大小写的完整属性名匹配时使用。万博1manbetx
请注意
的集
和得到
本节中提到的方法不同于属性集访问和属性获取访问方法。看到属性访问方法获取有关属性访问方法的信息。
子类的语法
使用抽象类matlab.mixin.SetGet
或matlab.mixin.SetGetExactNames
作为超类:
classdefMyClass < matlab.mixin.SetGet…结束
因为matlab.mixin.SetGet
和matlab.mixin.SetGetExactNames
源自…处理
类,则子类也是处理
类。
Get方法语法
的得到
方法使用对象句柄和属性名称返回对象属性的值。例如,假设H
是对象的句柄:
v = get(H,'PropertyName
');
如果指定具有单个属性名称的句柄数组,得到
返回每个对象的属性值作为值的单元格数组:
CV = get(H,'PropertyName
');
的简历
数组始终是列,无论其形状如何H
.
如果指定单元格数组为字符
向量属性名称和句柄数组,得到
返回属性值的单元格数组。单元格中的每一行对应于句柄数组中的一个对象。单元格中的每一列对应一个属性名。
道具= {'PropertyName1
','PropertyName2
'};CV = get(H,props);
得到
返回一个m × n单元格数组,其中m =长度(H)
和N = length(props)
.
如果指定句柄数组,但没有指定属性名,得到
返回类型的数组结构体
数组中的每个结构对应于中的对象H
.每个结构中的每个字段对应于类定义的属性H
.每个字段的值是对应属性的值。
SV = get(H);
如果未分配输出变量,则H
必须是标量。
使用示例请参见对句柄数组使用get.
设置方法语法
的集
方法将指定的值分配给具有句柄的对象的指定属性H
.如果H
是句柄的数组,MATLAB分配值到数组中的每个对象的属性H
.
集(H,'PropertyName
'PropertyValue)
可以将包含属性名称的单元格数组和包含属性值的单元格数组传递给集
:
道具= {'PropertyName1
','PropertyName2
'};vals = {Property1Value,Property2Value};集(H,道具,瓦尔斯)
如果长度(H)
,则属性值单元格数组(瓦尔斯
)可以为每个对象中的每个属性设置值。例如,假设长度(H)
是2(两个对象句柄)。你想在每个对象上分配两个属性值:
道具= {'PropertyName1
','PropertyName2
'};vals = {Property11Value,Property12Value;Property21Value,Property22Value};集(H,道具,vals))
前面的语句等价于下面的两个语句:
集(H (1),'PropertyName1
'Property11Value,'PropertyName2
'Property12Value)组(H (2),'PropertyName1
'Property21Value,'PropertyName2
'Property22Value)
如果指定了标量句柄,但没有指定属性名,集
返回一个结构体
类中的每个属性都有一个字段H
.每个字段包含一个空单元格数组。
SV = set(h);
类派生自matlab.mixin.SetGet
这个样例类定义了一个set/get接口,并演示了继承方法的行为:
classdefLineType < matlab.mixin.SetGet属性风格=“- - -”标志=“o”结束属性(SetAccess = protected)单位=“点”结束方法函数obj = LineType(s,m)如果Nargin b> 0 obj。Style = s;obj。标记= m;结束结束函数obj = set.Style(obj,val)如果~ (strcmpi (val,“- - -”) | |…strcmpi (val,“——”) | |…strcmpi (val,“. .”)错误(“无效的行样式”)结束obj。年代tyle = val;结束函数obj = set.Marker(obj,val)如果~ isstrprop (val,“图形”)错误(“标记必须是可见字符”)结束obj。标记= val;结束结束结束
创建一个类的实例并保存它的句柄:
h = LineType()“——”,‘*’);
查询任何对象属性的值得到
方法:
get (h,“标记”)
Ans = *
设置任何属性的值集
方法:
集(h,“标记”,“问”)
用set和get调用的属性访问方法
MATLAB调用属性访问方法(集。年代tyle
或集。标记
在线型
类),当你使用集
和得到
方法。
集(h,“风格”,“”-”)
使用LineType>LineType.set出错。无效的行样式
有关属性访问方法的详细信息,请参见属性访问方法
列出所有属性
返回一个结构体
包含对象属性及其当前值得到
:
h = LineType()“——”,‘*’);SV = get(h)
SV = Style: '——' Marker: '*' Units: 'points'
返回一个结构体
包含具有的属性公共
SetAccess
使用集
:
S = set(h)
S =样式:{}标记:{}
的线型
类定义了单位
财产与SetAccess = protected
.因此,S = set(h)
不创建字段为单位
在年代
.
集
不能返回具有非公共集访问权限的属性的可能值。
使用得到
句柄数组
假设您创建了一个数组线型
对象:
H = [LineType()]“. .”,“z”)、线型(“——”,“问”)]
H = 1x2 LineType与属性:样式标记单位
当H
是句柄数组,得到
返回(长度(H)
属性值的单元数组:
CV = get(H,“风格”)
CV = '…' '——'
当H
是句柄数组,且未指定属性名称,得到
返回一个结构体
包含名称与属性名称相对应的字段的数组。的输出得到
到一个变量H
不是标量。
SV = get(H)
SV = 2x1结构数组与字段:样式标记单位
的值标记
属性中第二个数组元素的属性SV
结构数组:
SV(2)。标记
Ans = q
句柄、名称和值的数组
可以将句柄数组、属性名称的单元格数组和属性值的单元格数组传递给集
.中的每个对象的属性值单元格数组必须有一行属性值H
.在属性名称数组中,每行必须有每个属性的值:
H = [LineType()]“. .”,“z”)、线型(“——”,“问”));集(H, {“风格”,“标记”},{“. .”,“o”;“——”,“x”})
的结果集
是:
H (1)
ans = LineType with properties: Style: '..'标记:“0”单位:“点”
H (2)
ans = LineType with properties: Style: '——' Marker: 'x' Units: 'points'
自定义属性列表
通过在子类中重新定义以下方法来自定义属性列表的显示方式: