一些matlab.®对象(例如图形对象),基于的对象实现接口放
和得到
功能。这些函数可以在单个函数调用中访问对象数组上的多个属性。
你可以加放
和得到
通过从其中一个类派生的课程的功能:
matlab.mixin.setget.
- 当您想要支持不区分大小写的部分属性名金宝app称匹配时使用。衍生自matlab.mixin.setget.
不影响使用点表示法对属性所需的确切属性名称。
matlab.mixin.setgetexactnames.
- 当您想要仅支持区分大小写的全部属性名称匹配金宝app时使用。
笔记
这放
和得到
本节中提到的方法与属性集访问和属性获取访问方法不同。看物业访问方法有关属性访问方法的信息。
使用抽象类matlab.mixin.setget.
或者matlab.mixin.setgetexactnames.
作为超类:
Classdef.myclass结尾
因为matlab.mixin.setget.
和matlab.mixin.setgetexactnames.
源自处理
类,你的子类也是一个处理
班级。
这得到
方法使用对象句柄和属性名称返回对象属性的值。例如,假设H
是对象的句柄:
v = get(h,'propertyname.
');
如果使用单个属性名称指定句柄数组,得到
将每个对象的属性值返回为值的单元格数组:
cv = get(h,'propertyname.
');
这简历
无论的形状如何,阵列都是一列H
。
如果指定单元格数组char
矢量属性名称和一系列手柄,得到
返回属性值的单元格数组。单元中的每一行对应于句柄阵列中的对象。单元中的每个列对应于属性名称。
Props = {'propertyname1.
'那'propertyname2.
'};cv = get(h,props);
得到
返回一个m-by-n个单元格数组,其中m =长度(h)
和n =长度(道具)
。
如果指定句柄阵列,但没有属性名称,得到
返回一系列类型塑造
其中阵列中的每个结构对应于对象H
。每个结构中的每个字段对应于由类别定义的属性H
。每个字段的值是相应属性的值。
sv = get(h);
如果您未分配输出变量,那么H
必须是标量。
例如,看到使用GET与手柄数组。
这放
方法将指定的值分配给具有句柄的对象的指定属性H
。如果H
是一系列句柄,MATLAB为数组中的每个对象分配对属性的值H
。
套(H,'propertyname.
',适当的价值)
您可以通过单元格数组和属性值的单元格数组放
:
Props = {'propertyname1.
'那'propertyname2.
'};vals = {property1value,property2value};设置(h,props,vals)
如果长度(h)
大于一个,然后是属性值单元格数组(val
)可以为每个对象中的每个属性具有值。例如,假设长度(h)
是2(两个物体句柄)。您希望在每个对象上分配两个属性值:
Props = {'propertyname1.
'那'propertyname2.
'};vals = {property11value,property12value; property21value,property22value};设置(H,Props,Vals))
前面的声明相当于以下两个陈述:
设置(h(1),'propertyname1.
',property11value,'propertyname2.
',property12value)设置(h(2),'propertyname1.
',property21value,'propertyname2.
',property22value)
如果指定标量句柄,但没有属性名称,放
返回A.塑造
在类中的每个属性有一个字段H
。每个字段都包含一个空的单元格数组。
sv = set(h);
此示例类定义了集/获取界面,并说明了继承方法的行为:
Classdef.linetype特性风格=' - 'Marker ='o'结尾特性(setaccess =受保护)单位=“点”结尾方法功能obj = linetype(s,m)如果nargin> 0 obj.style = s;obj.marker = m;结尾结尾功能set.style(obj,val)如果〜(Strcmpi(val,' - ')||......Strcmpi(Val,' - ')||......Strcmpi(Val,'..')) 错误('无效的线条风格')结尾obj.style = val;结尾功能set.marker(obj,val)如果〜isstrprop(val,'形象的') 错误('标记必须是可见的性格')结尾obj.marker = val;结尾结尾结尾
创建类的实例并保存其句柄:
h =线型(' - '那'*');
使用Inherited查询任何对象属性的值得到
方法:
得到(h,'标记')
ans ='*'
使用Inherited设置任何属性的值放
方法:
套(H,'标记'那'Q')
MATLAB调用属性访问方法(set.style.
或者set.marker.
在里面线型
类)当你使用时放
和得到
方法。
套(H,'风格'那'-.-')
使用lineetype / set.style(第20行)错误错误
有关属性访问方法的更多信息,请参阅物业访问方法
返回A.塑造
包含对象属性及其当前值得到
:
h =线型(' - '那'*');sv = get(h)
sv = struct with字段:style:' - '标记:'*'单位:'点'
返回A.塑造
包含具有的属性民众
setaccess.
使用放
:
s = set(h)
s =带有字段的结构:样式:{}标记:{}
这线型
班级定义了单位
财产与setaccess =受保护
。所以,s = set(h)
不创建一个字段单位
在S.
。
放
无法返回具有非公开设置访问权限的可能值。
得到
用手柄阵列假设您创建了一系列线型
对象:
h = [linetype('..'那'z'),线型(' - '那'Q')
H = 1x2 LineType具有属性:样式标记单元
什么时候H
是一系列手柄,得到
返回一个(长度(h)
-1)属性值的单元格数组:
cv = get(h,'风格')
cv = 2×1个单元阵列{'..'} {' - '}
什么时候H
是一系列句柄,您不指定属性名称,得到
返回A.塑造
数组包含具有与属性名称对应的名称的字段。分配输出得到
到一个变量时H
不是标量。
sv = get(h)
SV = 2x1结构阵列与字段:样式标记单位
获得价值标记
来自第二个数组元素的属性SV.
结构数组:
SV(2).Marker
ans ='q'
您可以传递一组句柄,属性名称的单元格数组和属性值的单元格数组放
。属性值单元格数组必须为每个对象具有一行属性值H
。每行必须为属性名称数组中的每个属性具有值:
h = [linetype('..'那'z'),线型(' - '那'Q')];设置(h,{'风格'那'标记'},{'..'那'o';' - '那'X'})
这个电话的结果放
是:
H(1)
ANS = LineType具有属性:STYLE:'..'标记:'O'单位:'点
H(2)
ANS =具有属性的线型:STYLE:' - '标记:'X'单位:'点'
通过重新定义子类中的以下方法,自定义属性列表显示:
派生的课程matlab.mixin.setget.
可以使用它PartialMatchPriority.
属性属性指定部分名称匹配的相对优先级。MATLAB在解析匹配多个属性名称的不完整性和不区分大小写的文本字符串时适用此属性。
继承的放
和得到
方法可以在没有含糊不相识的名称字符串产生的含糊之处解析不精确的属性名称。当部分属性名称模糊时,因为名称匹配多个属性,PartialMatchPriority.
属性值可以确定Matlab匹配的属性。
默认优先级相当于partialmatchpriority = 1
。减少属性的相对优先级,设置PartialMatchPriority.
正整数值2或更大。属性的优先级随着价值而减少PartialMatchPriority.
增加。
例如,在这个课堂上冗长
属性与名称匹配的优先级更高版本
财产。
Classdef.myclass特性冗长结尾特性(partialmatchpriority = 2)版本结尾结尾
打电话给放
具有潜在模糊不适的名称的方法ver
设置冗长
由于其相对优先权较高。没有设置PartialMatchPriority.
属性,模糊名称会导致错误。
a = myclass;设置(a,“ver”,10)Disp(a)
MyClass与属性:录音:10版本:[]
相同的名称选择适用于得到
方法。
v = get(a,“ver”)
v = 10.
具有非匹配案例的全名匹配优先于与更高优先级属性的部分匹配。例如,此类定义了基线
优先级为1(默认)和a的属性根据
优先权的财产(低于1)。
Classdef.myclass特性基线结尾特性(PartialMatchPriority = 2)基础结尾结尾
打电话给放
字符串的方法根据
设置根据
财产。基线
优先级更高,但全名与错误案例匹配优先。
a = myclass;设置(a,“根据”,-2)disp(a)
MyClass具有属性:基线:[]基础:-2
你可以使用PartialMatchPriority.
属性以避免在添加新属性时引入代码不兼容。例如,此类启用放
和得到
方法是指的距离
用字符串的财产dis
因为这酌情分开
财产优先率较低。
Classdef.行星%1.0版特性距离结尾特性(PartialMatchPriority = 2)酌情分开结尾结尾
Version 2.0课程介绍了一个名为的属性不连续性
。防止在现有代码中导致模糊的部分属性名称,使用PartialMatchPriority.
设置优先级不连续性
低于以前现有的属性。
Classdef.行星%2.0版特性直径;nummoons = 0明显射下;距离比素;结尾特性(PartialMatchPriority = 2)酌情分开;结尾特性(partialmatchpriority = 3)不连续= false;结尾结尾
版本1.0行星
班级,这个电话给了放
方法不是含糊不清的。
p =行星;套(p,“光盘”,真的)
但是,随着引入的不连续性
属性,字符串圆盘
变得暧昧。通过给予不连续性
属性优先级较低,字符串圆盘
继续匹配酌情分开
财产。
笔记
在编写可重复使用的代码时,使用完整的区分大小写的属性名称避免含糊不清,请防止与后续软件版本的不兼容,并产生更可读的代码。
得到
|matlab.mixin.setget.
|matlab.mixin.setgetexactnames.
|放