脚本 #
脚本是类似于传统语言中的主函数的可执行入口点。脚本通常会调用已发布模块的函数,这些函数对全局存储执行更新。脚本是不会在全局存储中发布的临时代码片段。
一个 Move 源文件(或编译单元)可能包含多个模块和脚本。但是,发布模块或执行脚本是单独的 VM 操作。
语法
脚本具有以下结构:
script {
<use>*
<constants>*
fun <identifier><[type parameters: constraint]*>([identifier: type]*) <function_body>
}
script
块必须以其所有 use
声明开始,然后是任何 constants
和(最后)main function
声明。主函数可以有任何名称(即,它不需要称为 main
),是脚本块中的唯一函数,可以有任意数量的参数,并且不得返回值。以下是每个组件的示例:
script {
// Import the debug module published at the named account address std.
use std::debug;
const ONE: u64 = 1;
fun main(x: u64) {
let sum = x + ONE;
debug::print(&sum)
}
}
脚本的功能非常有限——它们不能声明友元、结构类型或访问全局存储。它们的主要目的是调用模块函数。