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

Invokeinarray    

简述
调用类的成员方法或对类的成员变量进行赋值操作。支持对重载方法的调用。基本功能与invoke一样,区别在于设置成员变量的值与调用成员方法的参数值通过数组进行传递。另外,支持命名参数的调用。
定义
Invokeinarray(Obj: TSLObject; MemberName:String; MemberValue: Boolean;Params:array):any
参数
名称类型说明
Obj TSLObject实例对象
MemberNameString字符串(小写),成员(方法或属性)的名称
MemberValue Boolean布尔,成员类型,0:成员方法,1:成员属性
Paramsarray数组,若是成员属性则数组传递的是设置的成员属性值,若是成员方法则表示成员方法的参数,成员方法没有参数时须初始化为空数组。命名参数调用时,下标字符串作为参数名。
返回any任意值,若是成员属性则返回0,若是成员方法则返回成员方法的执行结果。
  • 范例

    范例01:设置成员变量后调用成员方法并返回结果
      obj := new classTest();
      //设置成员变量name的值为"张三"
      invokeinarray(obj,"name",1,array("张三"));
      //设置成员变量age的值为18
      invokeinarray(obj,"age",1,array(18));
      //设置成员变量sid的值为"ts001"
      invokeinarray(obj,"sid",1,array("ts001"));
      //执行单参数重载成员方法fun
      a:=invokeinarray(obj,"fun",0,array("name"));
      //执行双参数重载成员方法fun
      b:=invokeinarray(obj,"fun",0,array("name","age"));
      //执行三参数重载成员方法fun
    c:=invokeinarray(obj,"fun",0,array("name","age","studentID"));
    return array(a,b,c);
    type classTest = class
      name;
      age;
      sID;
      function fun(a);overload;
      begin
        s:= "\r\n"+a+":"+name;
        echo s;
        return s;
      end
      function fun(a,b);overload;
      begin
        s:="\r\n"+a+":"+name+" "+b+":"+floattostr(age);
        echo s;
        return s;
      end
      function fun(a,b,c);overload;
      begin
        s:="\r\n"+a+":"+name+" "+b+":"+floattostr(age)+" "+c+":"+sID;
        echo s;
        return s;
      end
    end

    打印:
    name:张三
    name:张三 age:18
    name:张三 age:18 studentID:ts001返回:
    范例02:命名参数调用的方式
    //调用
    obj:=new classTestB();
    return invokeinarray(obj,"fun",0,array("c":3,"b":2,"a":1));//命名参数的调用
    //类实现
    type classTestB= class
      function fun(a,b,c);overload;
      begin
        return array(a,b,c);
      end
    end;
    返回:array(1,2,3)
    参考
    Invoke 
相关