【发布时间】:2017-04-11 15:20:55
【问题描述】:
我在 MATLAB 中使用我自己的类 my_class 像这样创建了一个对象
car = my_class();
与
classdef my_class < handle
properties
color = 'red';
end
methods
function obj = my_class()
% ...
end
end
end
现在我试图通过类 (my_class) 或属性 (color) 来查找我的对象。但是findall 或findobj 总是返回一个空矩阵,无论我在做什么。你有什么线索吗?谢谢。
编辑我需要这样的东西:
car1 = my_classA();
car2 = my_classA();
house1 = my_classB(); ... house25 = my_classB();
tree1 = my_classC(); ... tree250 = my_classC();
在我的代码中,我不能引用句柄的名称(如car2.color),因为我有许多不同的对象,我想通过一个函数来搜索它们,如下所示:
loop over all objects (maybe with findobj/findall without knowing object name/handle)
if object is of class `my_classA`
get handle of `my_classA`
change `color`
else if object is of class `my_classB`
get handle of `my_classB`
do something ...
end
end
【问题讨论】:
-
您为什么要这样做?你的用例是什么?
-
我需要更改属性或需要调用多个对象的方法。但是我需要首先在某种循环或类似的循环中搜索指定的对象,因为我想通过这些值而不是它们的句柄来获取对象。
-
...但是你为什么不把这些对象收集到一个数组中呢?
-
...这是从smell 开始的。我想我对这里发生的事情有预感......
-
啊,好吧,我尝试了您的建议,将所有对象收集在一个数组中。到目前为止,这确实有效。谢谢。但我也想要一种不同的方法,首先在类中查找所有对象。我尝试了
h = findall(0,'class','my_classA')和类似的东西,但每次都返回一个空矩阵。
标签: matlab class oop object find