程序集

在轻语言中,除了一个文件定义一个类外,还支持通过程序集文件定义多个类,在轻语言中程序集文件的后缀为:.ass ,源自英文 assembly 的缩写,程序集的主要作用是聚合类的定义,在一个程序集文件中,可以定义多个类,接口,结构体。其核心目的是可以把「功能相关的多个类」放在同一个文件里,减少文件数量,提升代码的可读性和管理效率(比如把「动物相关的猫头鹰、大熊猫类」都放在 动物类.ass 里)。

代码示例

人员类.ass 程序集文件中定义多个和人员有关的数据类型。

' 定义“人员”类,是所有其它人员类型的基础类型,含有姓名,年龄属性
定义 人员 为 类型
    变量 姓名 为 文本型
    变量 年龄 为 整数型
结束 定义

定义 学生 继承 人员
    变量 年级 为 整数型
    变量 班级 为 整数型
    变量 班主任 为 文本型
    函数 学生()

    结束 函数
    函数 学生(参_姓名 为 文本型,参_年龄 为 整数型,参_年级 为 整数型,参_班级 为 整数型)
        姓名 = 参_姓名
        年龄 = 参_年龄
        年级 = 参_年级
        班级 = 参_班级
    结束 函数
    函数 取学生信息() 为 文本型
        返回 $"姓名:{姓名},班级:{班级},年龄:{年龄}"
    结束 函数
结束 定义

定义 教师 继承 人员
    变量 教学科目 为 文本型
    变量 教学成果 为 文本型
    ' 0普通教师,1高等教师
    变量 教师职称 为 整数型
    函数 教师(参_姓名 为 文本型)
        姓名 = 参_姓名
    结束 函数
    函数 教学()
        弹出提示("教师:" + 姓名 + " 正在教学!" )
    结束 函数
结束 定义

与文件类.spc的区别

  • 继承与实现

    • 在文件类中,通过 @继承@实现 关键字指定父类和要实现的接口,而在程序集中定义的类型,需要使用 继承实现 关键字指定。
  • 匿名接口对象

    • 在文件类中可以定义匿名接口对象,使用定义关键字定义的类不行。
  • 定义方式

    • 文件类的类名等于文件名,一个文件就是一个类,而在程序集中使用定义关键字可以定义多个类。

编译区别

以安卓以视窗为例, .spc .spl 作为后缀的文件类,编译输出为独立的 .java 文件,一个文件表示一个类。在程序集 .ass 中定义的类,每个类都是独立的,编译输出为独立的 .java 文件,例如:在一个程序集文件中,分别定义了 学生教师 类,在编译时会分别输出为 学生.java教师.java 两个类文件。