多层次参数

阅读(855) 标签: 多层次参数, 函数,

在集算器中提供了大量的函数。在很多函数用到的参数都比较多,为了比较清楚地判断函数参数的位置,便于读写,在集算器中特别提供了多层次的函数参数分隔符。

函数参数的分隔符

集算器中,使用 冒号: 逗号, 分号; 作为函数参数的分隔符,优先级依次降低。

使用逗号分隔多个参数的方式是最常见的,这与大多数程序语言中的函数语法是相同的。如:

 

A

B

1

Math

92

2

Writing

84

3

=if(B1>=80 && B2>=60,"Pass","Fail")

 

4

=create(Math,Writing,Result)

 

5

>A4.insert(0,B1,B2,A3)

 

例子中,A3A4A5中的if(), create()T.insert()函数中,各个参数之间,均用逗号,分隔。A执行后,A4中结果如下:

有些函数中,会有一些“成对”出现的参数,这两个参数紧密关联或共同起作用。在这样的情况下,它们之间往往用冒号:分隔:

 

A

B

1

Math

92

2

Writing

84

3

=if(B1+B2>=180:"A",between(B1+B2,150:180):"B", B1+B2>=120:"C",B1+B2<120:"D")

 

4

=create(Math,Writing,Rank)

 

5

>A4.insert(0,A3:Rank,B1:Math,B2:Writing)

 

如,在A3if()函数中,每种条件对应一个返回结果,中间用冒号分隔;条件中使用between()函数时,150180中间用冒号分隔,共同组成数值区间[150,180]。在A5T.insert()函数中,字段值与字段名也是成对出现的,中间用冒号分隔。执行后,A4中的结果如下:

在有些函数中,可以对某些参数添加一个指示性参数,从而改变与之相关的计算方式,此时也经常用冒号分隔。如:

 

A

1

=demo.query("select * from CITIES")

2

=A1.sort(STATEID,NAME)

3

=A1.sort(STATEID,-NAME)

A2A3中均对各个城市的记录做了排序,且均为先按州代码排,同一州的城市再按名称排序。不同的是,A3中的函数在名称前添加了负号,表示按名称排序时,从大到小降序。A2A3中获得的结果如下所示:

 

有时,函数中的参数,可以按功能明显划分为不同的部分,各个部分之间往往用分号;分隔:

 

A

1

=demo.query("select * from CITIES")

2

=A1.groups(STATEID; sum(POPULATION):Population)

3

=A2.top(-5,Population, ~)

A2中的groups()函数中,分号前的参数用来分组,分号后的参数用来计算汇总值;汇总值的参数,还用到了冒号分隔符,用来定义汇总字段的名称。A2中结果如下:

A3中的top()函数中,在逗号前面定义了取前几位,结果如下:

有的函数中,用到的参数很长,而这些参数往往会分成几组,组之间也用分号分隔:

 

A

1

=demo.query("select * from STATES")

2

=demo.query("select EID, NAME, STATE, DEPT, SALARY from EMPLOYEE")

3

=A2.groups(DEPT;count(~):Count)

4

=A2.switch(STATE,A1:NAME; DEPT,A3:DEPT)

A4T.switch()函数中,将不同的字段变换为其它序表中的记录,中间用分号分隔。在A4中,同时使用了逗号、冒号和分号作为函数参数的分隔符,这样的书写方式使得函数的参数层次明晰。A4中的计算结果如下:

函数参数的省略

集算器的函数有些参数有缺省值,在使用时可以不写,这样函数就会更为简洁。

前方是冒号分隔符的参数,一般是用来对另一个参数的计算模式等补充说明的,如果使用缺省模式,可以省略参数不写,如:

 

A

B

1

Math

92

2

Writing

84

3

=if(B1>=80 && B2>=60,"Pass","Fail")

 

4

=create(Math,Writing,Result)

 

5

>A4.insert(0,A3:Result,B1:Math,B2:Writing)

 

6

>A4.insert(0,B1,B2,A3)

 

A5中,冒号后面的参数用来指定插入记录时,某个值对应的字段名。在A6中,使用默认的字段名依次设入字段值,此时可以省略指定字段名的部分。A5A6插入两条记录后,A4中的结果如下:

而在冒号表示区间的分隔时,冒号不能随便省略:

 

A

B

1

Math

92

2

Writing

84

3

=if(between(B1+B2,180:):"A",between(B1+B2,150:180):"B", between(B1+B2,120:150):"C", between(B1+B2,:120):"D")

 

A3中,between(B1+B2,180:)between(B1+B2,:120)分别表示B1+B2>=180,以及B1+B2<=120,其中的冒号不能省略。A3中结果如下:

用分号分隔的参数,如果分号后方再没有参数,则对应的分号也不必写。如A.top()函数中不设定n,只取第1位;或者在T.switch()函数中,去掉了某个字段的转换时。

用逗号分隔的参数,一般情况下在参数缺省时逗号都应该保留,如:

 

A

1

[a,b,c,d,e,f,g]

2

=A1.to(4,)

3

=A1.to(,4)

A2中的表达式相当于=A1.to(4,A1.len())A3中的表达式相当于=A1.to(1,4)。我们可以对比一下A2A3中的结果: