[NAME] ALL.dao.type.map.method [TITLE] 关联表方法 [DESCRIPTION] 1 map<@K=any,@V=any>( count: int, hashing = 0 )[index: int => tuple<@K,@V>] 2 => map<@K,@V> 3 clear( self: map<@K,@V> ) 4 reset( self: map<@K,@V> ) 5 reset( self: map<@K,@V>, hashing: enum<none,auto,random> ) 6 erase( self: map<@K,@V>, from: @K ) => map<@K,@V> 7 erase( self: map<@K,@V>, from: @K, to: @K ) => map<@K,@V> 8 insert( self: map<@K,@V>, key: @K, value: @V ) => map<@K,@V> 9 find( invar self: map<@K,@V>, invar key: @K, comparison: enum<LE,EQ,GE> = $EQ ) 10 => tuple<key:@K,value:@V> | none 11 keys( invar self: map<@K,@V> ) => list<@K> 12 values( invar self: map<@K,@V> ) => list<@V> 13 size( invar self: map<@K,@V> ) => int 14 iterate( invar self: map<@K,@V> )[key: invar<@K>, value: invar<@V>] 15 iterate( self: map<@K,@V> )[key: invar<@K>, value: @V] 16 collect( invar self: map<@K,@V> )[key: @K, value: @V => none|@T] => list<@T> 17 associate( invar self: map<@K,@V>, hashing = 0 ) 18 [key: invar<@K>, value: invar<@V> => none|tuple<@K2,@V2>] => map<@K2,@V2> 19 find( invar self: map<@K,@V> )[key: invar<@K>, value: invar<@V> =>int] 20 => tuple<key:@K,value:@V> | none 21 apply( self: map<@K,@V> )[key: @K, value: @V => @V] => map<@K,@V> 0.1 方法 0.1.1 clear(self:map<@K,@V>) 1 clear( self: map<@K,@V> ) 删除关联表里的所有键值对。 0.1.2 reset(self:map<@K,@V>) 1 reset( self: map<@K,@V> ) 清空关联表里的所有键值对。并将其内部键值节点缓存起来, 以便支持跟快速的键值插入。 0.1.3 reset(self:map<@K,@V>,hashing:enum<none,auto,random>) 1 reset( self: map<@K,@V>, hashing: enum<none,auto,random> ) 如上方法重置关联表。并且此方法可改变该关联表的存储方式, 即从有序改为无序,或无序改为有序。当 改成无序关联表示, 还可指定哈希种子的产生方式: hashing=auto,使用缺省哈希种子; hashing= random,使用随机哈希种子。 0.1.4 erase(self:map<@K,@V>,from:@K)=>map<@K,@V> 1 erase( self: map<@K,@V>, from: @K ) => map<@K,@V> 将一个键及其关联的值从关联表里删除。 返回该关联表本身。 0.1.5 erase(self:map<@K,@V>,from:@K,to:@K)=>map<@K,@V> 1 erase( self: map<@K,@V>, from: @K, to: @K ) => map<@K,@V> 将封闭区间"from"和"to"之间的所有键及其值从关联表里删除。 返回该关联表本身。 0.1.6 insert(self:map<@K,@V>,key:@K,value:@V)=>map<@K,@V> 1 insert( self: map<@K,@V>, key: @K, value: @V ) => map<@K,@V> 将新的键值对插入到关联表。 返回该关联表本身。 0.1.7 invert(self:map<@K,@V>)=>map<@V,@K> 1 invert( self: map<@K,@V> ) => map<@V,@K> 将关联表里的键与值对调,即键作值,值作键。 返回新关联表。 0.1.8 find(invar self:map<@K,@V>,invar key:@K,...)=>tuple<key:@K,value:@V>|none 1 find( invar self: map<@K,@V>, invar key: @K, comparison: enum<LE,EQ,GE> = $EQ ) 2 => tuple<key:@K,value:@V> | none 查找与键"key"象对应(或最接近的)的键值。 对应方式由"comparison"参数指定: 1. "$LE": 参数键必须小于或等于查找的键; 2. "$EQ": 参数键必须等于查找的键; 3. "$GE": 参数键必须大于或等于查找的键; 0.1.9 keys(invar self:map<@K,@V>)=>list<@K> 1 keys( invar self: map<@K,@V> ) => list<@K> 返回关联表里的所有键。 0.1.10 values(invar self:map<@K,@V>)=>list<@V> 1 values( invar self: map<@K,@V> ) => list<@V> 返回关联表里的所有值。 0.1.11 size(invar self:map<@K,@V>)=>int 1 size( invar self: map<@K,@V> ) => int 返回关联表里的键值对个数。 0.1.12 iterate(invar self:map<@K,@V>)[key:invar<@K>,value:invar<@V>] 1 iterate( invar self: map<@K,@V> )[key: invar<@K>, value: invar<@V>] 历遍关联表,并对其中每对键值执行相应的代码块。 0.1.13 iterate(self:map<@K,@V>)[key:invar<@K>,value:@V] 1 iterate( self: map<@K,@V> )[key: invar<@K>, value: @V] 历遍关联表,并对其中每对键值执行相应的代码块。 0.1.14 collect(invar self:map<@K,@V>)[key:@K,value:@V=>none|@T]=>list<@T> 1 collect( invar self: map<@K,@V> )[key: @K, value: @V => none|@T] => list<@T> 历遍关联表,并对其中每对键值执行相应的代码块。 然会将代码块所返回的非空值以列表的形式返回。 0.1.15 associate(invar self:map<@K,@V>,hashing=0)[...=>none|tuple<@K2,@V2>]=>map<@K2,@ V2> 1 associate( invar self: map<@K,@V>, hashing = 0 ) 2 [key: invar<@K>, value: invar<@V> => none|tuple<@K2,@V2>] => map<@K2,@V2> 历遍关联表,并对其中每对键值执行相应的代码块。 然后返回一个新的关联表,这个关联表将包含代码块 所返回的新键值对。 这里的"hashing"参数的意义与list::associate()方法里的 "hashing"参数意义一 致。 0.1.16 find(invar self:map<@K,@V>)[...]=>tuple<key:@K,value:@V>|none 1 find( invar self: map<@K,@V> )[key: invar<@K>, value: invar<@V> =>int] 2 => tuple<key:@K,value:@V> | none 查找第一对满足代码块所定义的条件的键值对。 代码块的非零返回值表示条件满足。 0.1.17 apply(self:map<@K,@V>)[key:@K,value:@V=>@V]=>map<@K,@V> 1 apply( self: map<@K,@V> )[key: @K, value: @V => @V] => map<@K,@V> 历遍关联表,并对其中每对键值执行相应的代码块。 然后将键值对里的值替换为代码块所返回的值。