0

我想将对象集合存储在具有键对象对的关联数组中。目标是以后能够使用密钥查找对象。

我希望我应该能够为此使用 containers.map 内置类。我编写了以下示例代码来说明我的意思:

classdef clsMyClass < handle
   properties 
      dblMyProperty1
   end 
   methods
      function self = clsMyClass(dblValue)
        if nargin > 0
          for intCounter = numel(dblValue):-1:1
              self(intCounter).dblMyProperty1 = dblValue(intCounter);
          end                
        end
      end      
   end
end 

classdef clsMyClassCollection < handle
   properties 
      contMyCollection
   end 
   methods
      function self = clsMyClassCollection(strValues,strKeys)
        if nargin > 0
          self.contMyCollection= containers.Map(strKeys, clsMyClass(strValues));
        end
      end      
   end
end 

for i=10:-1:1 ; vecKeys{i} = ['A' num2str(i)];end;
objMyClassCollection = clsMyClassCollection ([0:10:90],vecKeys);

这将导致以下错误:

??? Error using ==> containers.Map
The values must be a cell array when the keys are a cell array.

如果我能在修复此错误方面获得一些帮助,并且您能告诉我这是否是实现关键对象集合的最佳方式,那就太好了。

4

1 回答 1

2

尝试

self.contMyCollection= containers.Map(strKeys, num2cell( clsMyClass(strValues)) );
于 2013-06-18T13:37:26.460 回答