plato/map_container.m

50 lines
1.4 KiB
Matlab

% a map is an instance of a Map class
% creates an empty map
emptyMap = containers.Map;
% .Count: total number of key/value pairs
assert(emptyMap.Count == 0);
% .KeyType: class of the key value
% by default set to 'char'
assert(isequal(emptyMap.KeyType, 'char'));
% .ValueType: class of the values
% by default set to 'any'
assert(isequal(emptyMap.ValueType, 'any'));
% create initalized map
% note: keys can only be
% - integers scalars
% - 1xN char arrays
% - double or single scalars
pairs = containers.Map({'Name', 'Msg'}, {"Enrico", "Hello"});
assert(pairs.Count == 2);
assert(isequal(pairs.KeyType, 'char'));
assert(isequal(pairs.ValueType, 'any')); % this didn't change
% size(map, 1) is equivalent to .Count
assert(pairs.Count == size(pairs, 1));
% size(map, 2) = size(map, 3) = ... = 1 (map is sort of nx1)
assert(size(pairs, 23) == 1);
% size(map) returns [map.Count 1]
assert(isequal( size(pairs), [pairs.Count 1] ));
% keys() returns the sorted keys as a cell array
assert(isequal( keys(pairs) , sort({'Name', 'Msg'})));
% values() returns the map values, sorted as the corresponding keys
assert(isequal( values(pairs), {"Hello", "Enrico"} ));
% index map by key
assert(isequal( pairs('Msg'), "Hello" ));
% change a value
pairs('Msg') = "World";
% check for key existence
assert(isequal(pairs.isKey('Msg'), true));
assert(isequal(pairs.isKey('Test'), false));