# TSL 高级特性 > 本文档是 `$tsl-guide` 的子文档,覆盖模块/对象/扩展语法与新一代特性。 > 详细规则以 `docs/tsl/syntax_book/` 为准。 ## 目录 - [Unit/命名空间/函数文件](#unit命名空间函数文件) - [Class/Object 模型](#classobject-模型) - [扩展语法:矩阵/集合/过滤](#扩展语法矩阵集合过滤) - [TS-SQL(select/insert/update/delete)](#ts-sqlselectinsertupdatedelete) - [运行时与性能语法要点](#运行时与性能语法要点) - [新一代语法概览](#新一代语法概览) --- ## Unit/命名空间/函数文件 ### Unit 基本结构 ```tsl Unit Demo_Unit; interface var Ua,Ub; const CS = 888; function AddV(); implementation var Uc; function AddV(); begin Ua += 10; Uc += 1; end; initialization Ua := 100; Ub := "Tinysoft Unit"; Uc := 1; finalization echo "Demo_Unit End."; end. ``` ### uses 与调用优先级 ```tsl uses Demo_Unit; // 直接调用(按 uses 优先级解析) AddV(); // 指定单元调用 Unit(Demo_Unit).AddV(); CALL("Demo_Unit.AddV"); ``` ### 函数文件(TSF)与命名空间 - `.tsf` 文件可存放 function/class/unit(函数库目录 `funcext`) - 命名空间: ```tsl NameSpace "ProjectA"; SomeFunction(); ``` 如需固定命名空间,可在 `tsl.Conf` 配置 `Namespace=...`(详见 `04_modules_and_namespace.md`)。 --- ## Class/Object 模型 ### 类定义与继承 ```tsl Type Base = Class function Speak(); virtual; end; Type Child = Class(Base) function Speak(); override; end; ``` ### 构造函数与析构函数 ```tsl Type User = Class user_id; user_name; function Create(id,name); overload; Begin user_id := id; user_name := name; End; function Destroy(); Begin // 清理资源 End; end; ``` ### 属性(Property) ```tsl Type Account = Class _id; function getId(); function setId(v); property Id read _id write setId; end; ``` ### 创建对象 ```tsl Obj := CreateObject("User", 1, "Alice"); Obj2 := New User(2, "Bob"); ``` 更多:`Self`、`FindClass`、`ClassInfo`、`operator` 重载等见 `05_object_model.md`。 --- ## 扩展语法:矩阵/集合/过滤 ### 矩阵初始化与访问 ```tsl M1 := zeros(10); // 一维数组 M2 := zeros(10,10); // 二维矩阵 M3 := rand(5,3); // 随机矩阵 M4 := eye(3); // 单位矩阵 Seq := 1->10; // 数列数组 ``` ```tsl // 子矩阵与索引 Rows := MRows(M2,1); Cols := MCols(M2,1); Sub := M2[array(1,3), array(0,2)]; Col0 := M2[:,0]; ``` ### 矩阵查找 ```tsl A := Rand(10,10); B := MFind(A, MCell>0.9); ``` ### 集合运算 ```tsl A := array((1,2),(3,4)); B := array((1,2),(5,6)); C := A Union2 B; D := A Intersect B; E := A Minus B; ``` ### 结果集过滤 ```tsl R1 := FilterIn(R, CodeArr, "Code"); Idx := FilterNotIn(R, CodeArr, "Code", false); Sub := R[Idx, array("Code","V1")]; ``` 更多细节见 `06_extended_syntax.md`。 --- ## TS-SQL(select/insert/update/delete) ```tsl T := zeros(10, array("A","B")); T[:,"A"] := 1->10; V1 := select ["A"] from T end; V2 := sselect ["A"] from T end; V3 := vselect sumof(["A"]) from T end; V4 := mselect * from T end; update T set ["A"] = 100 where ["B"] = 4 end; delete from T where ["A"] = 0 end; insert into T insertfields(["A"],["B"]) values(1,2); ``` TS-SQL 语法细节与高级用法见 `06_extended_syntax.md`。 --- ## 运行时与性能语法要点 ### 网格计算操作符 `#` ```tsl R[i] := #CalcStock(B[i]) with array(pn_stock():B[i]) timeout 3000; ``` ### 全局缓存 详见 `07_debug_and_profiler.md` 中的全局缓存管理与相关函数。 --- ## 新一代语法概览 ### 复数 ```tsl Z := 4+3j; Z2 := complex(4,3); ``` ### WeakRef 与算符重载 新一代语言支持 WeakRef 与对象算符重载,详见 `08_new_generation.md` 与 `05_object_model.md`。