FAQ > 金融建模 > 建模问题 > 平台使用

Q:在天软中如何设置参数的默认值(缺省值)?    

  • A:天软函数中,参数是按参数位置来识别各个参数变量的
       参数类型是弱类型,即数据类型是不定,可变的
       参数是依次识别,后面的参数可省掉,注意程序中需要做相关的处理,避免导致运行异常

     
     
    比如根据需求封装以下各类函数,可对函数调用时,进行缺省执行:

    //定义最大参数个数
    function funcA(a,b);//支持funcA()、funcA(a)、funcA(a,b)的调用
    begin
      if ifnil(a) then a:=0;  //当第一个参数无时,赋默认值
      if ifnil(b) then b:=3;  //当第二个参数无时,赋默认值
      return a+b;
    end

    //只有最后一个参数可省
    function funcB(a,b);//只支持第二个参数不设置即funcB(a)、funcB(a,b)
    begin
      if ifnil(b) then b:=3;  //当第二个参数无时,赋默认值
      return a+b;
    end

    function funC(); //随意参数个数
    begin
       vLen:=PARAMCOUNT;//函数传入的参数个数
       vars:=params;  //params当前函数的参数值,是个序列
       echo vLen;
       a:=0;     //返回参数序列中实数数据的总和
       for i:=0 to vLen-1 do
          if ifnumber(vars[i]) then
             a+=vars[i];
       return a;
       { 注意:若直接访问params,则需从下标1开始,即params[1]表示第一个参数   }
    end

    调用方式展示如下:

    t1:= funcA();  //返回3
      t2:= funcA(10);//返回13
      t3:= funcA(10,10);//返回20
      t4:= funcB(10);//返回13
      t5:= funcB(10,10);//返回20
      t6:= funC();//返回0
      t7:= funC(10);//返回10
      t8:= funC('test',10);//返回10
      t9:= funC(1,2,3,4,10); //返回20
      t10:= funC(1,'a',array(2,2),9);//返回10
      return array(t1,t2,t3,t4,t5,t6,t7,t8,t9,t10);

    返回结果:
    3
    13
    20
    13
    20
    0
    10
    10
    20
    10