函数调用

函数是完成特定任务的独立代码模块,包括内置函数和用户定义的函数。要定义一个函数,可以使用关键字"def"。详情请参考 第7章:函数化编程

用户自定义函数支持指定默认参数值。需要注意的是,带默认值的参数不可以是可变参数(mutable类型),且默认值必须为常量。如果一个参数设置了默认值,后续参数都必须设置默认值。同样调用函数时,如果指定了keyword,其后的参数赋值时也必须指定keyword。

//用户自定义函数
$ def f(a):a*a;
$ f(5);
25

$ def f(a=0, b=2){return a + b}
$ f(b=3, a=2)
5

$ f(,3)
3

调用函数

所有函数的参数通过引用进行传递。默认所有参数都是不可修改,除非另有显式声明。

通常函数的语法可以采用以下3种形式:

  • 标准函数调用格式:<func>(parameters)。

  • 调用对象方法格式:x.<func>(parameters),其中x是第一个参数。

  • 如果括号内只有一个参数,也可使用<func>参数,或者x.<func>参数。

例子

$ x=1..10;
$ sum(x);
55
$ x.sum();
55
$ sum x;
55

$ x=2;
$ y=3;
$ add(x,y);
5
$ x.add(y);
5
$ x add y;
5

参数的值默认不可修改:

$ x=1..10;
$ add(x,1);
[2,3,4,5,6,7,8,9,10,11]
$ x;
[1,2,3,4,5,6,7,8,9,10]

$ def f(x){x+=1 return x};
Syntax Error: [line #1] Constant variable [x] can't be modified.

使用mutable声明可变参数:

$ x=1..10;
$ def f(mutable x){x+=1 return x};
$ f(x);
$ x;
[2,3,4,5,6,7,8,9,10,11]        // 更改向量x的值。

DolphinDB提供1000多个内置函数,其中包括绝大多数常用的计算函数如 avg, sum, log, add, sub, prod 等。

$ avg(1.5 2.5 2 2);
2

$ log(10);
2.302585

$ prod(1 2 3)
6