本章介绍iterate()函数的多种用法。
描述:
对排列迭代循环并返回最后一个运行x的结果。
语法:
A.iterate(x,a,c)
备注:
循环排列A,~~表示上一次运算x的结果,默认初始值为a,a缺省为空,返回最后一个运算x的结果。表达式c为真时提前结束。
选项:
@a |
返回序列中每个成员的运算结果。 |
参数:
A |
序列/排列。 |
x |
表达式。 |
a |
初始值。 |
c |
返回true/false类型的表达式。 |
返回值:
x的计算结果
示例:
|
A |
|
1 |
[2,222,22,122,2222] |
|
2 |
=A1.iterate(~*2) |
4444 |
3 |
=A1.iterate@a(~*2) |
[4,444,44,244,4444] |
4 |
=A1.iterate(~~*2,3) |
96 |
5 |
=A1.iterate(~~*2,5,~>500) |
80 |
6 |
=demo.query("select * from SALES") |
|
7 |
=A6.derive(A6.(AMOUNT).iterate(~~*2,5,~>20000):Cumulation) |
|
相关概念:
对管道中的排列迭代循环并返回最后一个运行x的结果。
语法:
备注:
循环管道ch中的排列,~~表示上一次运算x的结果,默认初始值为a,a缺省为空,返回最后一个运算x的结果。表达式c为真时提前结束。
参数:
ch |
管道。 |
x |
表达式。 |
a |
初始值。 |
c |
返回true/false类型的表达式。 |
返回值:
x的计算结果
示例:
|
A |
|
1 |
=[2,222,22,122,2222].cursor() |
|
2 |
=channel() |
|
3 |
=channel() |
|
4 |
=A2.iterate(~*2) |
|
5 |
=A3.iterate(~~*2,3) |
|
6 |
=A1.push(A2,A3) |
|
7 |
=A1.fetch() |
|
8 |
=A2.result() |
4444 |
9 |
=A3.result() |
96 |
10 |
=[100,200,800,2000].cursor() |
|
11 |
=channel() |
|
12 |
=A11.iterate(~~*3,10,~>250) |
|
13 |
=A10.push(A11) |
|
14 |
=A10.fetch() |
|
15 |
=A11.result() |
90 |
描述:
对游标中的排列迭代循环并返回最后一个运行x的结果。
语法:
cs.iterate(x,a,c)
备注:
循环游标cs中的排列,~~表示上一次运算x的结果,默认初始值为a,a缺省为空,返回最后一个运算x的结果。表达式c为真时提前结束。
参数:
cs |
游标。 |
x |
表达式。 |
a |
初始值。 |
c |
返回true/false类型的表达式。 |
返回值:
x的计算结果
示例:
描述:
循环函数中迭代运算。
iterate(x,a;Gi,…)
备注:
用于循环函数中,计算~~=x返回,当字段Gi发生变化时令~~=a,x是含有~~的表达式,Gi可省略,a省略为null。
参数:
x |
含有~~的表达式。 |
a |
初始值。 |
Gi |
字段名。 |
返回值:
x的计算结果
示例:
|
A |
|
1 |
=demo.query("select top 7 * from SCORES ") |
|
2 |
=A1.groups(CLASS:Class,STUDENTID:StudentID;iterate(~~*2): Score1) |
|
3 |
=A1.groups(CLASS:Class,STUDENTID:StudentID;iterate(~~*2,10): Score1) |
|
4 |
=A1.derive(iterate(~~*2,10;STUDENTID):F1) |
|
相关概念: