[NAME]
ALL.dao.type.map

[TITLE]
关联表类型

[DESCRIPTION]

道语言使用单个类型map来表示有序关联表和无序关联表(哈希表)。 有序关联表中的键值可按键的顺序
访问。 关联表可以枚举的方式创建。如果键与值之间使用=>,被创建的关联表将是 有序的,而使用->则创
建哈希表。

 0.1  定义 
     
   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
     


例子: 
     
   1  # 使用=>创建有序关联表:
   2  var map1 = { 'EE' => 5, 'BB' => 2, 'CC' => 3, 'AA' => 1 }
   3  
   4  # 使用->创建无序关联表:
   5  var hash1 = { 'EE' -> 5, 'BB' -> 2, 'CC' -> 3, 'AA' -> 1 }
   6  
   7  # 用键访问值:
   8  io.writeln( map1['BB'] )
   9  io.writeln( hash1['CC'] )
  10  
  11  # 关联表切片:
  12  io.writeln( map1[ 'AA' : 'CC' ] )
  13  io.writeln( map1[ 'BB' : ] )
  14  io.writeln( map1[ : 'CC' ] )
  15  
  16  # 关联表大小,键和值:
  17  io.writeln( %hash1 )         # 大小;
  18  io.writeln( map2.size() )    # 大小;
  19  io.writeln( map2.keys() )    # 所有键;
  20  io.writeln( map2.values() )  # 所有值;
  21  
  22  # 定义关联表的替代方式:
  23  var map2 = map{ 'ABC' => 123, 'DEF' => 456 }
  24  var hash2 = map{ 'ABC' -> 123, 'DEF' -> 456 }
  25  
  26  # 历遍关联表里的键值元素:
  27  for(var keyvalue in map1 ) io.writeln( keyvalue )
  28  for(var keyvalue in hash1 ) io.writeln( keyvalue )
     



[STRUCTURE]

dao.type.map--| dao.type.map: 关联表类型 (7.5 KB)
              |--method--| dao.type.map.method: 关联表方法 (5.9 KB)