脚本

脚本 #

脚本是类似于传统语言中的主函数的可执行入口点。脚本通常会调用已发布模块的函数,这些函数对全局存储执行更新。脚本是不会在全局存储中发布的临时代码片段。

一个 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)
    }
}

脚本的功能非常有限——它们不能声明友元、结构类型或访问全局存储。它们的主要目的是调用模块函数。