# 4. 程序结构与导入 一个 namespace 的代码视图由导入和声明组成。声明描述类型、逻辑或界面;导入使代码能够引用其他 namespace 中允许使用的声明。 ## 4.1 正文结构 本文采用的程序结构为: ```text 零个或多个 use 声明 一个或多个 class 或 function 声明 ``` 声明之间不使用逗号或分号。正文不含自身 namespace 声明,其归属来自外部 key 与索引。 这是一份逻辑代码视图的语法结构,不规定独立代码段的存储粒度或物理排列。代码段边界及视图组装规则见[代码存储与视图](../appendices/code-storage-and-views.md)。 ## 4.2 use 声明 代码归属:`bob:shop.checkout`。导入声明: ```endorphin use alice:shop.pricing ``` `use` 后跟一个完整 namespace key。用户名与路径用冒号分隔,路径层级用点号分隔。每个 `use` 引用一个 namespace,不附加类名、函数名或选择性名称列表。 引用整个 namespace 表示指定依赖来源,不表示获得访问权限或自动执行其中的函数。 ## 4.3 声明组合 代码归属:`alice:shop.data`。 ```endorphin class Product { name: String price: Int } function listedPrice(product: Product): Int { return product.price } ``` 同一视图可以同时包含类和函数。界面逻辑通过普通函数及其结果表达,与业务逻辑共用声明和表达式规则。 类与函数的内部结构分别在[类型与类](07-types-and-classes.md)和[函数与调用](09-functions-and-calls.md)中定义。查看资源和呈现界面结果见[资源访问与呈现](11-resource-access-and-presentation.md)。 ## 4.4 名称引用 导入后的声明必须依据可见性和名称查找规则使用。跨 namespace 示例采用“导入的名称可直接查找且没有冲突”的简化条件,用于展示调用含义;这不是对全部声明自动进入作用域的承诺。 名称限定、别名、同名冲突与可见性规则列于[规范状态](../appendices/specification-status.md#引用与代码视图)。官方 UI 组件的来源单独说明,不属于示例用户库。 ## 4.5 程序与局部片段 本书区分三类示例: - 声明示例:展示可以出现在代码视图中的类或函数。 - 函数体片段:展示 let、return 或局部表达式。 - 结构与访问示意:展示界面组成或资源访问行为,不表示源码。 局部片段用于查询语法,不自动成为程序顶层入口。入口选择、空视图与定位形式仍列于[规范状态](../appendices/specification-status.md#声明与类型)。 [上一章:namespace](03-namespaces.md) · [下一章:Preflight 与 inflight](05-preflight-and-inflight.md) · [目录](../README.md)