[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)