TSL语言基础 > UNIT单元管理 > UNIT单元的支持

UNIT单元中常量与变量    

  • TSL语言UNIT支持在interface或implementation中定义变量或者常量,支持findfunction获得一个unit对象,unit对象支持用.来调用方法或者interface里定义的变量或常量。
    用来支持在单元中对全局变量的需求。

    版本说明:目前仅新一代客户端本地运行环境中支持该功能。

    UNIT中变量的作用范围:全局变量
    interface中声明的变量或常量,可被对象访问。
    implementation中声明的变量或常量,只能被当前Unit单元内的方法访问。

    变量的定义:由关键字Var开头,后面接变量名,多个变量名之间用逗号分隔。
    如定义变量UA,UC:Var UA,UC;

    常量的定义:由关键字Const开头,后面接常量,具体用法可参考:常量及常量成员的定义与初始化
    如定义一个常量:Const UcA=100;

    外部对单元变量或常量的引用:findfunction(UnitName).UnitA

    示例:
    定义一个单元DeMo_Unit_Test01如下:
    Unit DeMo_Unit_Test01;
    interface
    var Ua,Ub;
    const CS=888;
    function addv();
    function NumbJO(v); //判断奇偶
    function print();

    implementation
    const CN=array("奇数","偶数");
    var Uc;

    function print();//打印变量与常量
    begin
     echo "当前值-Ua:",Ua," Ub:",Ub," Uc:",Uc," CS:",CS;
    end
    function addv();
    begin
      Ua+=10;
      Uc+=1;
    end;
    function NumbJO(v);
    begin
      if (v mod 2) =0 then
       echo v,"是一个",CN[1];
      else echo v,"是一个",CN[0];
    end;
    initialization //初始化
     Ua:=100;
     Ub:="Tinysoft Unit";
     Uc:=1;
    Finalization//析构前
     echo "DeMo_Unit_Test01 End.";
    end.

    应用展示:
    uses DeMo_Unit_Test01;
    obj:=findfunction("DeMo_Unit_Test01");//获取单元的对象
    //--获取Unit中变量Ua的值
    echo obj.Ua;
    obj.print();
    //--给变量重新赋值
    obj.Ua:=500;
    print();
    //--调用Unit中的方法
    {对方法的调用,当只存在一个单元时,可省略,若存在多个单元且有同名方法时,建议通过对象方式进行指定}
    obj.NumbJO(58);
    NumbJO(33);
    addv();
    print();
    return obj.Ub;

    打印结果:
    100
    当前值-Ua:100 Ub:Tinysoft Unit Uc:1 CS:888
    当前值-Ua:500 Ub:Tinysoft Unit Uc:1 CS:888
    58是一个偶数
    33是一个奇数
    当前值-Ua:510 Ub:Tinysoft Unit Uc:2 CS:888
    DeMo_Unit_Test01 End.

    程序返回结果:"Tinysoft Unit"