设计高速TurboScript脚本引擎随笔 - static class - perfect concept, I love
Posted on 2007-01-07 11:23 Riceball LEE 阅读(1800) 评论(0) 编辑 收藏 举报
通过 static class 概念,让所有的一切都可以以类的观点进行处理了!漂亮的solver!模块这一概念也可以视作一个static class.
真是好主意,看来俺的TurboScript需要重新构思类型系统了。
模块其实就是一个 static class, 模块中的的函数则是static method——和原来的函数一样,没有额外附加参数(static method 是没有 this 指针的),模块变量也成了模块类的字段成员。
抛弃我以前的设计的模块概念,从设计static Class 开始重新规划 TurboScript 的内存镜像,首先规划 TTurboStaticClassInfo,用来容纳runtime 的static class, 规划这个就首先要搞清楚,什么是static class:
static class 实际上就是 abstract and sealed class,并且规定在该类中只能定义static 字段和方法,类型定义应该不限制(至少我不限制,我还指望从它建立模块类呢)。
TurboScript 的模块是保存于文件的最小的单位,是各种类型函数的集合。引用的是模块。同时也是内存的最小单位,只有模块才拥有代码区和数据区。
TTurboModuleInfo 从 TTurboStaticClassInfo 上派生,其静态字段就是模块变量,静态方法就是模块函数。类型声明就是模块的类型声明,和TTurboStaticClass相比多的就是引用类型列表和引用模块列表。
真是好主意,看来俺的TurboScript需要重新构思类型系统了。
模块其实就是一个 static class, 模块中的的函数则是static method——和原来的函数一样,没有额外附加参数(static method 是没有 this 指针的),模块变量也成了模块类的字段成员。
抛弃我以前的设计的模块概念,从设计static Class 开始重新规划 TurboScript 的内存镜像,首先规划 TTurboStaticClassInfo,用来容纳runtime 的static class, 规划这个就首先要搞清楚,什么是static class:
static class 实际上就是 abstract and sealed class,并且规定在该类中只能定义static 字段和方法,类型定义应该不限制(至少我不限制,我还指望从它建立模块类呢)。
- abstract 限制住创建从该实例
- sealed 限制住从该类上派生
TurboScript 的模块是保存于文件的最小的单位,是各种类型函数的集合。引用的是模块。同时也是内存的最小单位,只有模块才拥有代码区和数据区。
TTurboModuleInfo 从 TTurboStaticClassInfo 上派生,其静态字段就是模块变量,静态方法就是模块函数。类型声明就是模块的类型声明,和TTurboStaticClass相比多的就是引用类型列表和引用模块列表。