对象数组
b1 = Square();
b2 = Square();
b3 = Square();
objArray = [b1,b2,b3];
- 当对象很多时,以上方法会很麻烦。加入我们要构造 10 个对象,可以用一下方式
obj.Array(1,10) = Square(5);
- 这样必须要求 Square 有不带参数的默认构造函数,因为前九个空缺的位置会自动调用默认构造函数
对象元胞数组
- 上述普通数组中只能放同一种类型的对象,如果要将 Rectangle 和 Circle 类放在同一个数组中,则需要放在元胞数组中。
o1 = Square();
o2 = Circle();
oCell = { o1,o2};
对象查询
- 可以用 findobj 函数查询符合要求的对象
- A = findobj(参数),其中参数可以如下所示
参数名称 | 说明 |
---|
(H) | 返回 H 中列出的对象及其所有子级 |
(H,property,value,…,property,value) | 查找将指定属性设置为指定值的 handle 对象 |
(H,’-not’,property,value) | 查找其指定的属性不等于 value 的对象。 |
(H,’-regexp’,property,value) | 将 value 参数的内容视为正则表达式。 |
(H,property,value,’-logicaloperator’,property,value) | 支持的逻辑运算符包括’or’,‘and’,‘xor’ |
(H,’-function’,fh) | 对 H 中的对象调用函数句柄 fh,并返回此函数对其返回 true 的对象。 |
(H,’-function’,property,fh) | 对 H 中对象的指定属性值调用函数句柄 fh,并返回此函数对其返回 true 的对象。此函数必须返回标量逻辑值。 |
(H,’-class’,class) | 查找属于指定类的所有对象。 |
(H,’-isa’,class) | 查找属于指定类的所有对象 |
(H,’-property’,property) | 查找 H 中具有给定属性的所有对象。 |
(H,’-method’,methodname) | 查找具有指定的方法名称的对象。 |
(H,’-event’,eventname) | 查找具有指定事件名称的对象。 |
(H,’-depth’,d,___) | 指定要搜索 H 中对象下面的实例层次结构中的多少个级别。 |
实例
classdef PhoneBook < handle
properties
name
number
end
methods
function
o.name = n;
o.number = p;
end
end
end
PBook = [PhoneBook('Jack',1001),
phoneBook('Loren',1002),
phoneBook('Doug',1002)];
o = findobj(PBook,'name','Jack');
- 寻找号码为 1002 的对象,由于有两个满足,返回 1 × 2 对象数组
o = findobj(PBook,'number',1002);
- 寻找 name 为 Loren 电话为 1002 的对象
o = findobj(PBook,'name','Loren','-and','number',1002);