描述:
针对序列/排列中每个成员计算表达式,返回原序列。
语法:
A.run(x) |
仅计算一个表达式。 |
A.run(x1,x2, ......xi) |
计算多个表达式。 |
备注:
针对序列/排列A中每个成员计算表达式xi,计算过程中可能对A修改,最后返回修改后的A。例如x为col1=col2+1,结果将修改col1字段值。
参数:
A |
序列/排列。 |
x |
计算表达式,一般为字段名,或者由字段名组成的合法表达式,可使用"~"引用当前记录。 |
选项:
@m |
数据量大的复杂运算中并行计算提升性能,计算次序不确定。 |
@z |
逆向计算,仅适用于非纯序列。 |
返回值:
序列/排列
示例:
利用 "run" 修改成员值:
|
A |
|
1 |
=[1,2,3,4,5] |
|
2 |
=A1.run(~=~*~) |
[1,4,9,16,25],"~"引用当前成员 |
利用 " run"函数实现EID和NAME的转换:
|
A |
|
1 |
=demo.query("select * from EMPLOYEE") |
|
2 |
=demo.query("select * from DEPARTMENT") |
|
3 |
=A2.run(MANAGER=A1.select@1(EID==A2.MANAGER).NAME) |
|
4 |
=demo.query("select * from EMPLOYEE") |
|
5 |
=demo.query("select * from DEPARTMENT") |
|
6 |
=A5.run@m(MANAGER=A4.select@1(EID==A5.MANAGER).NAME) |
数据量大的运算中提升性能。 |
利用 "run" 函数实现表间关联:
|
A |
|
1 |
=demo.query("select * from EMPLOYEE").keys(EID) |
|
2 |
=demo.query("select * from DEPARTMENT") |
|
3 |
=A2.run(MANAGER=A1.select@1(EID== A2.MANAGER)) |
|
4 |
=A2.MANAGER.STATE |
California,字段值为记录时,可用点操作符逐级引用。 |
逆向计算:
|
A |
|
1 |
=[1,2,3].run(~=iterate(~~+~)) |
[1,3,6] |
2 |
=[1,2,3].run@z(~=iterate(~~+~)) |
使用@z选项,逆向计算,返回结果:[3,5,6]。 |
注意:
A.(x)和A.run(x)的区别:
A.(x)的目的在于计算x表达式的值,并返回该表达式的值组成的序列;
A.run(x)的目的在于通过x的运算对A做出修改,从而返回修改后的序列/排列A。
相关概念: