[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>
     
历遍关联表,并对其中每对键值执行相应的代码块。 然后将键值对里的值替换为代码块所返回的值。