There are two mappings for a Slice dictionary, depending on its key type:
Key Type | Value Type | Mapped Type | Comments |
---|---|---|---|
integral type, enum , string | Any | containers.Map | Enumeration keys must be converted to integers. |
struct | Any | Native struct array | containers.Map does not support user-defined key types. |
The mapping generates a class with the same name as the dictionary. This class provides one useful function for applications: a new
function that returns an empty instance of the mapped type.
On this page:
Mapping to containers.Map
Consider the definition of our EmployeeMap once more:
dictionary<long, Employee> EmployeeMap;
Since the key is a primitive type, EmployeeMap
maps to containers.Map
. We can use it as shown below:
em = EmployeeMap.new(); e = Employee(); e.number = 31; e.firstName = 'James'; e.lastName = 'Gosling'; em(e.number) = e;
The new
function is especially useful for dictionaries that map to containers.Map
because this class must be constructed with the appropriate key and value types. For example, instead of calling EmployeeMap.new
, we can manually construct containers.Map
as follows:
em = containers.Map('KeyType', 'int64', 'ValueType', 'any');
We recommend using the new
function to reduce the possibility of run-time errors.
Mapping to struct array
A dictionary with a structure key type maps to a native MATLAB struct array. This mapping sacrifices some functionality, most notably the efficient indexing provided by containers.Map
, but it's a straightforward mapping that utilizes a native MATLAB type that developers are likely to be familiar with.
Consider this example:
struct ID { string symbol; string exchange; } dictionary<ID, double> Quotes;
We can construct this dictionary in MATLAB as follows:
quotes = []; % Or call Quotes.new() quotes(1).key = ID('CVX', 'NYSE'); quotes(1).value = 100.00;
Each element of the struct array must have key
and value
fields whose types are compatible with those of the mapped types for the Slice dictionary's key and value.