[NAME]
ALL.dao.type.list.method

[TITLE]
列表方法

[DESCRIPTION]


     
   1  list<@T=any>( count: int )[index: int => @T] => list<@T>
   2  list<@T=any>( count: int, init: @T )[index: int, prev: @T => @T] => list<@T>
   3  
   4  clear( self: list<@T> )
   5  size( invar self: list<@T> )=>int
   6  resize( self: list<@T<int|float|double|complex|string|enum>>, size: int )
   7  resize( self: list<@T>, value: @T, size: int )
   8  
   9  max( invar self: list<@T<int|float|double|complex|string|enum>> ) => tuple<@T,int>
  10  min( invar self: list<@T<int|float|double|complex|string|enum>> ) => tuple<@T,int>
  11  sum( invar self: list<@T<int|float|double|complex|string|enum>> ) => @T
  12  
  13  insert( self: list<@T>, item: @T, pos = 0 ) => list<@T>
  14  erase( self: list<@T>, start = 0, count = 1 ) => list<@T>
  15  join( self: list<@T>, other: list<@T>, ... : list<@T> ) => list<@T>
  16  append( self: list<@T>, item: @T, ... : @T ) => list<@T>
  17  push( self: list<@T>, item: @T, to: enum<front, back> = $back ) => list<@T>
  18  pop( self: list<@T>, from: enum<front,back> = $back ) => @T
  19  front( invar self: list<@T> ) => @T
  20  back( invar self: list<@T> ) => @T
  21  
  22  collect( invar self: list<@T>, direction: enum<forward,backward> = $forward )
  23      [item: @T, index: int => none|@V] => list<@V>
  24  collect( invar self: list<@T>, invar other: list<@S>, 
  25      direction: enum<forward,backward> = $forward )
  26      [item: @T, item2: @S, index: int => none|@V] => list<@V>
  27  associate( invar self: list<@T>, hashing = 0 )
  28      [item: invar<@T>, index: int => none|tuple<@K,@V>] => map<@K,@V>
  29  associate( invar self: list<@T>, invar other: list<@S>, hashing = 0 )
  30      [item: invar<@T>, item2: invar<@S>, index: int => none|tuple<@K,@V>]
  31      => map<@K,@V>
  32  reduce( invar self: list<@T>, direction: enum<forward,backward> = $forward )
  33      [item: invar<@T>, value: @T, index: int => @T] => @T|none
  34  reduce( invar self: list<@T>, init: @V,
  35      direction: enum<forward,backward> = $forward )
  36      [item: invar<@T>, value: @V, index: int => @V] => @V
  37  find( invar self: list<@T>, direction: enum<forward,backward> = $forward )
  38      [item: invar<@T>, index: int => int] => tuple<index:int,value:@T> | none
  39  iterate( invar self: list<@T>, direction: enum<forward,backward> = $forward )
  40      [item: invar<@T>, index: int]
  41  iterate( self: list<@T>, direction: enum<forward,backward> = $forward )
  42      [item: @T, index: int]
  43  
  44  sort( self: list<@T>, order: enum<ascend,descend> = $ascend, part = 0 ) => list<@T>
  45  sort( self: list<@T>, part = 0 )[X: @T, Y: @T => int] => list<@T>
  46  apply( self: list<@T>, direction: enum<forward,backward> = $forward )
  47      [item: @T, index: int => @T] => list<@T>
     


 0.1   Methods  


 0.1.1   list<@T=any>(count:int)[index:int=>@T]=>list<@T>  
     
   1  list<@T=any>( count: int )[index: int => @T] => list<@T>
     


 0.1.2   list<@T=any>(count:int,init:@T)[index:int,prev:@T=>@T]=>list<@T>  
     
   1  list<@T=any>( count: int, init: @T )[index: int, prev: @T => @T] => list<@T>
     


 0.1.3   clear(self:list<@T>)  
     
   1  clear( self: list<@T> )
     
清空列表里的元素。

 0.1.4   size(invar self:list<@T>)=>int  
     
   1  size( invar self: list<@T> )=>int
     
返回列表的长度。

 0.1.5   resize(self:list<@T<int|float|double|complex|string|enum>>,size:int)  
     
   1  resize( self: list<@T<int|float|double|complex|string|enum>>, size: int )
     
将列表改变成长度为"size"。 此方法仅适用于元素类型为基本类型的列表。

 0.1.6   resize(self:list<@T>,value:@T,size:int)  
     
   1  resize( self: list<@T>, value: @T, size: int )
     
将列表改变成长度为"size",并使用"value"作为新元素值。

 0.1.7   max(invar self:list<@T<int|float|double|complex|string|enum>>)=>tuple<@T,int>  
     
   1  max( invar self: list<@T<int|float|double|complex|string|enum>> ) => tuple<@T,int>
     
返回列表里的最大值及其下标。 只有元素类型为基本类型的列表才能用此方法。 如果元素类型为复数,
复数大小的比较将先比较其实部,再比较其虚部。

 0.1.8   min(invar self:list<@T<int|float|double|complex|string|enum>>)=>tuple<@T,int>  
     
   1  min( invar self: list<@T<int|float|double|complex|string|enum>> ) => tuple<@T,int>
     
返回列表里的最小值及其下标。

 0.1.9   sum(invar self:list<@T<int|float|double|complex|string|enum>>)=>@T  
     
   1  sum( invar self: list<@T<int|float|double|complex|string|enum>> ) => @T
     
返回列表元素的和。

 0.1.10   insert(self:list<@T>,item:@T,pos=0)=>list<@T>  
     
   1  insert( self: list<@T>, item: @T, pos = 0 ) => list<@T>
     
将值"item"插入列表里下标"pos"所指的位置。 返回该列表本身。

 0.1.11   erase(self:list<@T>,start=0,count=1)=>list<@T>  
     
   1  erase( self: list<@T>, start = 0, count = 1 ) => list<@T>
     
从列表的"start"位置开始删除"count"个元素。 返回该列表本身。

 0.1.12   join(self:list<@T>,other:list<@T>,...:list<@T>)=>list<@T>  
     
   1  join( self: list<@T>, other: list<@T>, ... : list<@T> ) => list<@T>
     
将一个或多个列表附加到列表尾部。 返回该列表本身。

 0.1.13   append(self:list<@T>,item:@T,...:@T)=>list<@T>  
     
   1  append( self: list<@T>, item: @T, ... : @T ) => list<@T>
     
将元素附加到列表尾部。 返回该列表本身。

 0.1.14   push(self:list<@T>,item:@T,to:enum<front,back>=$back)=>list<@T>  
     
   1  push( self: list<@T>, item: @T, to: enum<front, back> = $back ) => list<@T>
     
将元素推入列表首部或尾部。 返回该列表本身。

 0.1.15   pop(self:list<@T>,from:enum<front,back>=$back)=>@T  
     
   1  pop( self: list<@T>, from: enum<front,back> = $back ) => @T
     
将元素从列表的首部或尾部删除。 返回删除的元素。

 0.1.16   front(invar self:list<@T>)=>@T  
     
   1  front( invar self: list<@T> ) => @T
     
返回列表最前面的元素。

 0.1.17   back(invar self:list<@T>)=>@T  
     
   1  back( invar self: list<@T> ) => @T
     
返回列表最后面的元素。

 0.1.18   collect(invar self:list<@T>,direction:enum...)[...=>none|@V]=>list<@V>  
     
   1  collect( invar self: list<@T>, direction: enum<forward,backward> = $forward )
   2      [item: @T, index: int => none|@V] => list<@V>
     
历遍列表并对其每个元素执行相应的代码块。 代码块返回的非none值将用来构造一个新的类表并返回。

历遍方向由"direction"参数控制。

 0.1.19   collect(invar self:list<@T>,invar other:list<@S>,...)[...=>none|@V]=>list<@V>  
     
   1  collect( invar self: list<@T>, invar other: list<@S>, 
   2      direction: enum<forward,backward> = $forward )
   3      [item: @T, item2: @S, index: int => none|@V] => list<@V>
     
同时历遍两个列表并对其对应的元素执行相应的代码块。 代码块返回的非none值将用来构造一个新的类
表并返回。
历遍方向由"direction"参数控制。

 0.1.20   associate(invar self:list<@T>,hashing=0)[...=>none|tuple<@K,@V>]=>map<@K,@V>  
     
   1  associate( invar self: list<@T>, hashing = 0 )
   2      [item: invar<@T>, index: int => none|tuple<@K,@V>] => map<@K,@V>
     
历遍列表并对其每个元素执行相应的代码块。 该代码块既可返回一个空值none,也可放回一个键值元组
。 这些返回的键值元组将用来构造并返回一个新的关联表。
此方法的最后的可选参数"hashing"可取如下值:
-- 零: 表示被构造的关联表将是有序的;
-- 一: 表示被构造的关联表将是一个带缺省哈希种子的哈希表;
-- 二: 表示被构造的关联表将是一个带随机哈希种子的哈希表;
-- 其他整数: 表示被构造的关联表将是一个哈希表,并以  "hashing"为哈希种子;

 0.1.21   associate(invar self:list<@T>,invar other:list<@S>,hashing=0)[...]=>map<@K,@V> 
 
     
   1  associate( invar self: list<@T>, invar other: list<@S>, hashing = 0 )
   2      [item: invar<@T>, item2: invar<@S>, index: int => none|tuple<@K,@V>]
   3      => map<@K,@V>
     
与上述方法一样,只不过此方法同时历遍两个列表。

 0.1.22   reduce(invar self:list<@T>,direction:enum...)[...=>@T]=>@T|none  
     
   1  reduce( invar self: list<@T>, direction: enum<forward,backward> = $forward )
   2      [item: invar<@T>, value: @T, index: int => @T] => @T|none
     
化简列表里的元素。
其基本过程如下:
1. 取列表的第一元素为初始当前值;
2. 从第二个元素开始,每个元素的值和当前值都被传入相应的代码块,  代码块执行后返回的值将变成
新的当前值;
3. 当所有元素都被处理后,最后的当前值将被返回。
历遍方向由"direction"参数控制。 如果列表为空,空值none将被返回。

 0.1.23   reduce(invar self:list<@T>,init:@V,direction:enum...)[...=>@V]=>@V  
     
   1  reduce( invar self: list<@T>, init: @V, direction: enum<forward,backward>
   2      = $forward ) [item: invar<@T>, value: @V, index: int => @V] => @V
     
化简列表里的元素。
其基本过程与上面的方法基本一直。只不过这里初始当前值是由方法参数指定, 并且历遍是从列表的第
一元素开始。而且当前值的类型也不必和列表元素的类型一致。

 0.1.24   find(invar self:list<@T>,direction:...)[...]=>tuple<index:int,value:@T>|none  
     
   1  find( invar self: list<@T>, direction: enum<forward,backward> = $forward )
   2      [item: invar<@T>, index: int => int] => tuple<index:int,value:@T> | none
     
查找列表里第一个满足代码块所表示的条件。 代码块返回非零整数表示条件满足。 历遍方向由"direct
ion"参数控制。

 0.1.25   iterate(invar self:list<@T>,direction:enum...)[item:invar<@T>,index:int]  
     
   1  iterate( invar self: list<@T>, direction: enum<forward,backward> = $forward )
   2      [item: invar<@T>, index: int]
     
历遍列表并对其每个元素执行代码块。 历遍方向由"direction"参数控制。

 0.1.26   iterate(self:list<@T>,direction:enum...)[item:@T,index:int]  
     
   1  iterate( self: list<@T>, direction: enum<forward,backward> = $forward )
   2      [item: @T, index: int]
     
历遍列表并对其每个元素执行代码块。 历遍方向由"direction"参数控制。 此方法与前面方法的不同之
处在于前面的方法只能历遍常量列表。

 0.1.27   sort(self:list<@T>,order:enum<ascend,descend>=$ascend,part=0)=>list<@T>  
     
   1  sort( self: list<@T>, order: enum<ascend,descend> = $ascend, part = 0 )
   2      => list<@T>
     
按升序或降序排序列表。如果"part"参数非零,排序将只把最大的(降序)或最小 的(升序)"part"个元素
正确排好即可。

 0.1.28   sort(self:list<@T>,part=0)[X:@T,Y:@T=>int]=>list<@T>  
     
   1  sort( self: list<@T>, part = 0 )[X: @T, Y: @T => int] => list<@T>
     
序列表。列表元素的大小关系将由代码块确定。 排序时,列表中的两个元素将被传递给代码块作比较, 如
果代码块的结果为非零值,这将表示作为第一个参数的元素 小于作为第二个参数的元素。 参数"part"的
含义与上面的方法一致。

 0.1.29   apply(self:list<@T>,direction:enum...)[item:@T,index:int=>@T]=>list<@T>  
     
   1  apply( self: list<@T>, direction: enum<forward,backward> = $forward )
   2      [item: @T, index: int => @T] => list<@T>
     
历遍列表并对其每个元素执行代码块。 然后将该元素的值替换为代码块的结果值。 历遍方向由"direct
ion"参数控制。