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"