模块(Modules)
模块基础
- 文件夹根目录下的所有文件属于同一模块
- 简单程序默认为
main
模块(无需声明) - 模块名需满足:
- 蛇形命名(snake_case)
- 长度≤10字符
- 禁止循环导入
创建模块步骤
- 创建模块目录:
mkdir mymodule
vim mymodule/myfile.v
- 声明模块(文件首行):
// myfile.v
module mymodule
// 公开函数需用 pub
pub fn say_hi() {
println('hello from mymodule!')
}
- 模块内文件自由调用(无需pub):
// myfile2.v
module mymodule
pub fn say_hi_and_bye() {
say_hi() // 直接调用其他文件函数
println('goodbye')
}
使用模块
import mymodule // 导入模块
fn main() {
mymodule.say_hi() // 模块名.函数名
mymodule.say_hi_and_bye()
}
所有模块静态编译为单一可执行文件
项目文件夹特殊规则
主项目文件夹(用 v .
编译)允许:
- 多个文件声明不同模块(如
module main
,module abc
) - 方便原型开发阶段逐步拆分功能
初始化与清理函数
// 模块加载时自动执行(仅一次)
fn init() {
// 初始化代码(如C库初始化)
}
// 程序结束时自动执行(与init逆序)
fn cleanup() {
// 资源释放代码
}
规则:
- 必须命名为
init
/cleanup
- 禁止使用
pub
- 无论导入次数,仅执行一次