《Move 学习》模块与注释

大家好!今天我们来聊聊 Move 语言中的两个基础但非常重要的概念:模块(Module)注释(Comments)。无论你是刚入门的小白,还是已经有一些开发经验,这篇文章都会用最接地气的方式,带你轻松掌握这些概念。准备好了吗?Let's dive in!

📦 模块(Module):代码组织的基本单位

在 Move 语言中,模块 是代码组织的基本单位。模块用于将代码分组和隔离,模块中的所有成员默认是私有的。通过模块,你可以更好地组织代码结构,并控制代码的访问权限。

模块声明

模块通过 module 关键字声明,后面跟着包地址、模块名、分号和模块体。模块名通常使用 snake_case 命名法(全小写,单词间用下划线分隔),并且在包内必须是唯一的。

通常,sources/ 文件夹中的每个文件包含一个模块,文件名应与模块名一致。例如,donut_shop 模块应存储在 donut_shop.move 文件中。

move 复制代码
module book::donut_shop {
    // 模块内容
}

如果需要在同一个文件中声明多个模块,可以使用 模块块(Module Block)

地址与命名地址

模块地址可以是一个地址字面量(不需要 @ 前缀),也可以是在 Move.toml 中指定的命名地址。例如:

move 复制代码
module book::donut_shop {
    // 模块内容
}

Move.toml 中的地址部分:

toml 复制代码
[addresses]
book = "0x0"

模块成员

模块成员(如结构体、函数、常量等)在模块体内声明。以下是一个简单的模块示例,包含一个结构体、一个函数和一个常量:

move 复制代码
module book::donut_shop {
    struct Donut has drop {
        flavor: vector<u8>,
        price: u64,
    }

    public fun create_donut(flavor: vector<u8>, price: u64): Donut {
        Donut { flavor, price }
    }

    const MAX_PRICE: u64 = 100;
}

模块块

在 Move 2024 之前的版本中,模块内容需要用花括号 {} 包围。如果你需要在同一个文件中定义多个模块,可以使用模块块。

move 复制代码
module book::donut_shop {
    // 模块内容
}

module book::coffee_shop {
    // 另一个模块
}

📝 注释(Comments):代码的"笔记"

注释 是用来为代码添加说明或笔记的。它们不会被编译器处理,也不会出现在 Move 字节码中。注释可以帮助你解释代码的功能,添加开发笔记,或者临时移除部分代码。Move 支持三种注释:单行注释、块注释和文档注释。

单行注释

使用双斜杠 // 来注释掉一行的剩余部分。// 之后的所有内容都会被编译器忽略。

move 复制代码
let x = 10; // 这是一个单行注释

块注释

块注释用于注释掉一段代码。它们以 /* 开始,以 */ 结束。/**/ 之间的所有内容都会被编译器忽略。块注释可以用于注释单行、多行,甚至一行中的部分内容。

move 复制代码
let x = 10; /* 这是一个块注释 */
let y = /* 注释掉一部分 */ 20;

文档注释

文档注释 是一种特殊的注释,用于为代码生成文档。它们以三个斜杠 /// 开头,并放置在要注释的项之前。文档注释通常用于模块、结构体、函数和常量的说明。

move 复制代码
/// 这是一个文档注释
/// 用于描述模块、结构体或函数的功能
module book::donut_shop {
    /// 创建一个新的 Donut 对象
    public fun create_donut(flavor: vector<u8>, price: u64): Donut {
        Donut { flavor, price }
    }
}

文档注释可以通过工具生成 API 文档,帮助其他开发者更好地理解和使用你的代码

🚀 总结

通过本文,我们学习了 Move 语言中的 模块注释 的基本用法。模块是代码组织的基本单位,帮助你更好地管理和隔离代码;而注释则是代码的"笔记",帮助你和其他开发者理解代码的功能和设计。

如果你对 Move 语言感兴趣,记得关注我,后续我会带来更多关于 Move 的教程和实战案例!🚀

相关推荐
CryptoPP12 小时前
springboot 对接马来西亚数据源API等多个国家的数据源
spring boot·后端·python·金融·区块链
人类群星闪耀时1 天前
区块链技术如何重塑金融衍生品市场?
金融·区块链
渗透测试老鸟-九青1 天前
面试经验分享 | 成都渗透测试工程师二面面经分享
服务器·经验分享·安全·web安全·面试·职场和发展·区块链
程序猿chen1 天前
《JVM考古现场(十五):熵火燎原——从量子递归到热寂晶壁的代码涅槃》
java·jvm·git·后端·java-ee·区块链·量子计算
碧海饮冰2 天前
Crypto加密货币生态构成及较有前景的几个crypto项目
区块链
秋说3 天前
【区块链安全 | 第八篇】多签机制及恶意多签
安全·区块链
CryptoPP3 天前
基于WebSocket的金融数据实时推送系统架构设计对接多国金融数据API
websocket·网络协议·金融·系统架构·区块链
浪子小院3 天前
区块链技术之分布式数字身份:构建数字世界的信任基石
区块链
秋说3 天前
【区块链安全 | 第十七篇】类型之引用类型(一)
安全·区块链
网络研究院3 天前
身份验证:区块链如何让用户掌控一切
去中心化·区块链·身份·隐私·技术·验证·数字