makeCall

语法

makeCall(F, args…)

参数

F 是一个函数。

argsF 需要的参数。

详情

它使用指定参数调用一个函数并生成脚本。高阶函数 callmakeCall 的区别是,makeCall 不执行脚本。

例子

在下列例子中,我们创建了 generateReport 函数。它能够以指定格式显示表的某些列。

$ def generateReport(tbl, colNames, colFormat): sql(sqlColAlias(each(makeCall{format},sqlCol(colNames),colFormat),colNames), tbl).eval();

$ t = table(1..100 as id, (1..100 + 2018.01.01) as date, rand(100.0, 100) as price, rand(10000, 100) as qty, rand(`A`B`C`D`E`F`G, 100) as city);
$ t;

id

date

price

qty

city

1

2018.01.02

77.9896

375

A

2

2018.01.03

8.1332

7864

F

3

2018.01.04

56.7185

4912

B

4

2018.01.05

72.4173

534

E

5

2018.01.06

8.2019

31

B

6

2018.01.07

74.7275

4139

A

7

2018.01.08

7.5421

2725

D

8

2018.01.09

59.1689

3095

C

9

2018.01.10

55.8454

5443

D

10

2018.01.11

32.1285

6998

G

$ generateReport(t, ["id", "date","price","qty"], ["0", "MM/dd/yyyy", "0.00", "#,###"]);

id

date

price

qty

1

01/02/2018

77.99

375

2

01/03/2018

8.13

7,864

3

01/04/2018

56.72

4,912

4

01/05/2018

72.42

534

5

01/06/2018

8.20

31

6

1/07/2018

74.73

4,139

7

01/08/2018

7.54

2,725

8

01/09/2018

59.17

3,095

9

01/10/2018

55.85

5,443

10

01/11/2018

32.13

6,988

与之等效的SQL脚本是:

$ def generateReportSQL(tbl, colNames, colFormat): sql(sqlColAlias(each(makeCall{format},sqlCol(colNames),colFormat),colNames), tbl)
$ generateReportSQL(t, ["id", "date","price","qty"], ["0", "MM/dd/yyyy", "0.00", "#,###"]);
< select format(id, "0") as id,format(date, "MM/dd/yyyy") as date,format(price, "0.00") as price,format(qty, "#,###") as qty from t >