跳转至

变参数函数(接收可变数量参数的函数)语法

语法

  • 函数定义

function 函数名称(参数1, 参数2, ...可变参数名)

function func(...args);
begin
  return sum(args);
end;

function func(x, y, ...args);
begin
  return sum(args) + x + y;
end;

func将支持任意多个参数调用,并且会把所有的可变参数收集到可变参数变量中。
  • 调用函数时:如果函数定义时有可变参数,将支持任意参数,函数名(参数1, 参数2, ...)。所有的可变参数将会被接收到可变参数名变量中。

例如:

y := func(1,2,3);
println("y={}", y);

function func(...args);
begin
    return sum(args);
end;

打印:
y=6

函数func中的args变量将会接收所有的可变参数,内容是数组 array(1,2,3)
  • 如何把数组在函数调用时转换成可变参数:...数组。

例如

x := array(1,2,3);
y := func(...x);
println("y={}", y);

function func(...args);
begin
    return sum(args);
end;

打印:
y=6

在调用func(...x)时,....x会把数组内容依次转换成调用参数,变成func(1,2,3)
函数func中的args变量将会接收所有的可变参数,内容是数组 array(1,2,3)

TODO

  • 支持可变命名参数,例如:
定义:
function func(stock, cycle, ...*kwargs);
begin
    ...
end;

调用:
func("SZ000001", cycle:cy_1m(), rate:1, rateday:today());

kwargs = array("rate":1, "rateday":...)