天软金融分析.NET函数大全 > TSL函数 > 系统相关函数 > 表达式相关函数

CallInArray    

简述

根据名称或者函数指针调用指定的函数,将参数放入一个数组中送入该函数,不支持变参。另外,天软的函数指针可以用thisfunction()获得。该函数与call函数功能类似,注意两个函数设置参数的区别。Call函数直接列举,CallInArray函数将调用的函数的参数放在Array中。
定义
CallInArray(FuncName:<String|TFunction>;ParamContent:Array):Any;
参数
名称类型说明
FuncName<String|TFunction如果是字符串,表示函数名称,也可以是函数类型。
ParamContentArray 数组类型,第一个参数放在ParamContent[0],第二个放在ParamContent[1]以此类推。
  • 范例


    范例1:根据函数名称调用,第一个参数为函数名称
    return callinarray("StrToIntDef",array('1234',999));
    //返回1234

    范例2:调用匿名函数,第一个参数是指向匿名函数的变量
    {func1是一个变量,我们将一个函数体赋值给这个变量,变量型函数我们称为匿名函数,匿名函数的语句段放在某个函数体内,调用的时候,需使用call或callinarray函数进行调用。
    这个例子中,a是一个变量,当a在func1匿名函数中,并在匿名函数体重修改a,使a:=a+10; ,但执行完匿名函数后,a参数的值是不变的,即不支持变参,所以最后返回a为10,b为20。
    callinarray在这里执行匿名函数func1时,其参数不需要跟在func1之后。}
    a:=10;
    func1 := function(a) begin
      a:=a+10;
      return a;
    end;
    b:=callinarray(func1,array(a));
    return array(a,b);
    //array(10,20)

    范例3:根据函数指针调用,第一个参数为函数指针
    {thisfunction()函数可获得函数指针;由于调用的是stockzf3,该函数没有参数,因此,callinarray的第二个参数给空数组}
    setsysparam(pn_stock(),'SH000001');
    return callinarray(thisfunction(stockzf3),array());

    范例04:调用时指定参数传参
    Function CCC(a,b,c,d);//展示各参数的值
    begin
      echo "A:",a," B:",b," C:",c," D:",d;
      return b;
    end;
    //调用
    return callINArray("CCC",array("b":1,"d":4));

    返回:1
    打印结果:A:<NIL> B:1 C:<NIL> D:40
    解析:callINArray在通过数组传参数时,可以通过指定下标的方式给指定参数进行传参,下标对应函数定义中的变量名。
    上面示例中,只对参数b与d进行了传参,其它两参数没有进行传值,所以是nil。

    参考
    Eval THISFUNCTION Call 
相关