FAQ > 新一代客户端升级

2024-03-27新一代客户端升级说明:对象重载二进制函数    

简述
更新日志--------2024-03-27
修订:多fmarray参数函数当fmarray维度不匹配扩展维度时的问题。
修订:jdbc驱动jar包对sqlserver支持的更新问题。
升级:为更好地支持TSNETDB及符号计算等特殊应用,并对GPU、NPU等扩展计算提供基础支撑,升级如下:
          在原有算符重载以及TS-SQL重载的基础之上,TSL对象现新增二进制函数重载的支持,例如重载abs/sin/cos等。
          本次既支持二进制类用C等语言扩展重载对象的函数(为GPU/NPU等计算提供支撑),也支持TSL开发而成的类重载二进制函数的支持。
          对于TSL开发的对象,支持用类方法实现,方法前使用和算法重载一样的operator前缀,参数个数和原始被重载的二进制函数一致。
          同时也支持用对象成员函数实现,参数个数比原始被重载的二进制函数少1个,会以第一个参数的对象实例调用该成员函数。
          重载二进制函数模式,支持变参,例如trystrtoint等具有变参返回的函数。         
             
  • 2024-03-27 升级说明
    -----------------------------------
    修订:多fmarray参数函数当fmarray维度不匹配扩展维度时的问题。
    说明:修正复数FMarray不同维矩阵进行计算产生的异常。
    -----------------------------------
    修订:jdbc驱动jar包对sqlserver支持的更新问题。
    说明:修正jdbc包在sqlserver支持上的异常问题。
    ----------------------------------- 
    升级:为更好地支持TSNETDB及符号计算等特殊应用,并对GPU、NPU等扩展计算提供基础支撑,升级如下:
       在原有算符重载以及TS-SQL重载的基础之上,TSL对象现新增二进制函数重载的支持,例如重载abs/sin/cos等。
    说明:本次升级既支持二进制类用C等语言扩展重载对象的函数(为GPU/NPU等计算提供支撑),也支持TSL开发而成的类重载二进制函数的支持。
       对于TSL开发的对象,支持用类方法实现,方法前使用和算法重载一样的operator前缀,参数个数和原始被重载的二进制函数一致。
       同时也支持用对象成员函数实现,参数个数比原始被重载的二进制函数少1个,会以第一个参数的对象实例调用该成员函数。
       重载二进制函数模式,支持变参,例如trystrtoint等具有变参返回的函数。         
    下面为TSL类重载二进制函数的具体案例:
    c:=new c();
    echo abs(c),"\r\n";
    echo roundto(c,-2),"\r\n";
    echo "ret=",trystrtoint(c,i)," i=",i,"\r\n";
    echo strtoint(c),"\r\n";
    echo class(c).strtoint(c),"\r\n"; //operator方法依旧允许被直接调用
    type c=class
     fa;
     fb;
    public
     function create();
     begin
      fa:=-1111.135;
      fb:="2345";
     end;
     function operator abs(); //单参数的abs成员方法无参数
     begin
      return ::abs(fa);
     end;
     function operator roundto(pr); //两个参数的roundto成员方法只需要一个参数
     begin
      echo "abs:",self.abs(),"\r\n"; //在函数中调用和二进制同名函数需使用self.
      return ::roundto(fa,pr); //::明确调用全局方法
     end;
     function operator trystrtoint(v);//重载支持变参返回v
     begin
      return ::trystrtoint(fb,v);
     end;
     class function operator strtoint(v);//重载支持类方法保持和原始函数定义的参数一致
     begin
      return ::strtoint(v.fb);
     end;
    end;