Move语言 模块

模块是发布在特定地址下的打包在一起的一组函数和结构体。前几章里,我们已经使用了脚本,脚本需要与已发布的模块或标准库一起运行,而标准库本身就是在 0x1 地址下发布的一组模块。

模块在发布者的地址下发布。标准库在 0x1 地址下发布。

发布模块时,不会执行任何函数。要使用模块就得使用脚本。

模块以module关键字开头,后面跟随模块名称和大括号,大括号中放置模块内容。

module Math {
    // module contents
    public fun sum(a: u64, b: u64): u64 {
        a + b
    }
}

模块是发布代码供他人访问的唯一方法。新的类型和 Resource 也只能在模块中定义。

默认情况下,模块将在发布者的地址下进行编译和发布。但如果只是测试或开发,或者想要在模块中指定地址,请使用以下address {}语法:

address 0x1 {
module Math {
    // module contents
    public fun sum(a: u64, b: u64): u64 {
        a + b
    }
}
}

如示例所示,Move编码的最佳实践是保持模块行不缩进。

Move 在默认上下文中只能使用基本类型,也就是整型、布尔型和地址,可以执行的有意义或有用的操作也就是操作这些基本类型,或者基于基本类型定义新的类型。除此之外还可以导入已发布的模块(或标准库)。直接导入可以直接在代码中按 ...