    [NAME]
    ALL.dao.type.map

    [TITLE]
    Map or Hash Map Container Type

    [DESCRIPTION]

    Dao supports map and hash map as a single type map. A map contains ordered keys, while
    a hash map contains unordered keys. They can be created by enumeration in almost the
    identical way, except that => is used for map and : is used for hash map.
     0.1  Definition

       1  MapKeyValueList ::= Expression => Expression { ',' Expression => Expression }
       2  HashKeyValueList ::= Expression : Expression { ',' Expression : Expression }
       3
       4  MapEnumeration  ::= [ 'map' ] '{' MapKeyValueList '}'
       5  HashEnumeration ::= [ 'map' ] '{' HashKeyValueList '}'
       6
       7  Map ::= MapEnumeration | HashEnumeration

    A map is created using "=>",

       1  map1  = { 'EE' => 5, 'BB' => 2, 'CC' => 3, 'AA' => 1 }

    A hash map is created using "->",

       1  hash1 = { 'EE' -> 5, 'BB' -> 2, 'CC' -> 3, 'AA' -> 1 }

    Get value by key,

       1  io.writeln( map1['BB'] )
       2  io.writeln( hash1['CC'] )

    Get sub map/hash by slicing,

       1  io.writeln( map1[ 'AA' : 'CC' ] )
       2  io.writeln( map1[ 'BB' : ] )
       3  io.writeln( map1[ : 'CC' ] )

    Get size, keys and values,

       1  io.writeln( %hash1 )         # get size;
       2  io.writeln( map2.size() )    # get size;
       3  io.writeln( map2.keys() )    # get keys;
       4  io.writeln( map2.values() )  # get values;

    Alternative way to define map/hash,

       1  map2  = map{ 'ABC' => 123, 'DEF' => 456 }
       2  hash2 = map{ 'ABC' -> 123, 'DEF' -> 456 }

    Iterate over maps,

       1  for( keyvalue in map1 ) io.writeln( keyvalue )
       2  for( keyvalue in hash1 ) io.writeln( keyvalue )

    [STRUCTURE]

    dao.type.map--| dao.type.map: Map or Hash Map Container Type (2.8 KB)
                  |--method--|