2.7 KiB
2.7 KiB
4. 程序结构与导入
一个 namespace 的代码视图由导入和声明组成。声明描述类型、逻辑或界面;导入使代码能够引用其他 namespace 中允许使用的声明。
4.1 正文结构
本文采用的程序结构为:
零个或多个 use 声明
一个或多个 class、function 或 export scene 声明
声明之间不使用逗号或分号。正文不含自身 namespace 声明,其归属来自外部 key 与索引。
这是一份逻辑代码视图的语法结构,不规定独立代码段的存储粒度或物理排列。代码段边界及视图组装规则见代码存储与视图。
4.2 use 声明
代码归属:bob:shop.checkout。导入声明:
use alice:shop.pricing
use 后跟一个完整 namespace key。用户名与路径用冒号分隔,路径层级用点号分隔。每个 use 引用一个 namespace,不附加类名、函数名或选择性名称列表。
引用整个 namespace 表示指定依赖来源,不表示获得访问权限或自动执行其中的函数。
4.3 声明组合
代码归属:alice:shop.data。
class Product {
name: String
price: Int
}
function listedPrice(product: Product): Int {
return product.price
}
同一视图可以同时包含类和函数,也可以包含场景。类与函数不需要依附 UI 场景;只有业务逻辑的 namespace 无需声明 render。
类、函数和场景的内部结构分别在类型与类、函数与调用和场景与渲染树中定义。
4.4 名称引用
导入后的声明必须依据可见性和名称查找规则使用。跨 namespace 示例采用“导入的名称可直接查找且没有冲突”的简化条件,用于展示调用含义;这不是对全部声明自动进入作用域的承诺。
名称限定、别名、同名冲突与可见性规则列于规范状态。官方 UI 组件的来源单独说明,不属于示例用户库。
4.5 程序与局部片段
本书区分三类示例:
- 声明示例:展示可以出现在代码视图中的类、函数或场景。
- 函数体片段:展示 let、return 或局部表达式。
- 渲染节点片段:展示 render 内的组件树。
局部片段用于查询语法,不自动成为程序顶层入口。入口选择、空视图与多个场景的选择规则仍列于规范状态。