我在使用matlab的containers.Map时遇到问题。
这是我的问题的一个例子:
当我尝试使用定义为的键单元数组构建 myClass 实例数组的映射时:
valueSet = myClass.empty(4,0);
keySet = cell(1,4);
for i=1:4
valueSet(i) = myClass();
keySet{i} = valueSet(i).name;
end
map = containers.Map(keySet, valueSet);
和
classdef myClass < handle
properties
name;
end
methods
function self = myClass()
self.name = randstr(10);
end
function output = randstr(n)
symbols = ['a':'z' 'A':'Z' '0':'9'];
nums = randi(numel(symbols),[1 n]);
output = symbols (nums);
end
end
end
我收到此错误:
Error using containers.Map
Specified value type does not match the type expected for this container.
但是matlab文档说:
mapObj = containers.Map(keySet,valueSet) 构造一个包含一个或多个值以及每个值的唯一键的 Map。
keySet 为地图指定 n 个唯一键的 1×n 数组。如果 n > 1 并且键是字符串,则 keySet 必须是元胞数组。
valueSet :为地图指定 n 个值的任何类的 1×n 数组。valueSet 中的值的数量必须等于 keySet 中的键的数量。
我也尝试指定类类型,但它也引发了一个错误:
containers.Map('KeyType','char', 'ValueType','myClass')
Error using containers.Map
Unsupported ValueType 'myClass' specified. See documentation for valid value types.
所以我不明白......如果 containers.Map 对任何类都有效,为什么不为 myClass 工作?