模块
导入其他文卷,并理解模块路径、命名空间、缓存和循环依赖。
公 法 平方(本数:数):数 则
归 本数 乘 本数;
终在另一卷中引用:
引「模块/数术.yx」为 数术;
言 数术.平方(9);也可写作引「模块/数术.yx」作 数术;。相对路径以包含导入语句的文卷目录为基准,不受启动命令所在目录影响。
每个模块在独立词法环境中执行。顶层声明默认私有,只有以公修饰的变量、常量、法和类会进入模块命名空间。公开变量保持活绑定:模块内更改后,外部下次读取会看到新值。
模块只执行一次,后续引用复用缓存;成员不能由外部改写,循环引用会报错。
限定类型与公开重导出
1.1.13 起,导入模块中的类或协议在类型位置使用模块别名.类型名。限定类型可用于注解、联合、可空、泛型、法类型、继承、协议实现和是判断;当前模块自己声明的类型仍可裸写。不同模块中的同名类型拥有不同身份,同一模块经不同别名导入时仍指向同一个类型。
公 引「控件.yx」为 控件;
类 特殊按钮 承 控件.按钮 纳 控件.可描述 则
终顶层公 引会把模块作为当前模块的公开成员重导出。包可以用它建立稳定 facade,而不暴露内部文件布局;yanxu 文 --json以模块 API 清单 v2 记录声明所有者、完整限定名与重导出路径。旧代码若曾依赖“导入后偶然可以裸写外部类型”,应改为显式限定名。完整步骤见1.1.13 迁移指南。
包与标准模块
新项目继续使用格式 2 清单。最低配置只需包信息,依赖和权限按需添加:
[包]
名 = "算书"
格式 = 2
版 = "1.0.0"
言序 = ">=1.1.7"
入口 = "src/主.yx"
[依赖]
工具 = { 包 = "共享工具", 路径 = "../tools", 版 = "^1" }
[导出]
默认 = "src/主.yx"
数术 = "src/数术.yx"依赖可以使用与真实包名不同的别名,也可来自路径、Git 或索引。格式 2 的言序.lock在构建前固定直接和传递依赖、精确版本、来源、Git 提交、校验和、依赖边、目标平台、导出表与原生制品。请使用言包生成和解释锁图,不要手工编辑。
引「包:工具」为 工具;读取默认导出,引「包:工具/数术」为 数术;读取显式公开模块。顶层项目不能越过自己的清单直接导入传递依赖,也不能依赖第三方包的内部文件布局。模块按确定顺序初始化;循环诊断会显示完整的甲 → 乙 → 甲链。
1.0 稳定集合包括文字、数学、时间、文件、JSON、网络、测试、路径、环境、哈希、编码、统计、CSV、随机、标识、模板和校验;1.1 兼容加入Base64、正则、URL、日期、原生套接字、字节、进程和资源,目前共 25 个。完整 API 见标准库,二进制语义见字节串与二进制 I/O,套接字资源见套接字。