模块(Modules)

模块基础

  • 文件夹根目录下的所有文件属于同一模块
  • 简单程序默认为 main 模块(无需声明)
  • 模块名需满足:
    • 蛇形命名(snake_case)
    • 长度≤10字符
    • 禁止循环导入

创建模块步骤

  1. 创建模块目录:
mkdir mymodule
vim mymodule/myfile.v
  1. 声明模块(文件首行):
// myfile.v
module mymodule

// 公开函数需用 pub
pub fn say_hi() {
    println('hello from mymodule!')
}
  1. 模块内文件自由调用(无需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() {
    // 资源释放代码
}

规则:

  1. 必须命名为 init/cleanup
  2. 禁止使用 pub
  3. 无论导入次数,仅执行一次