《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 的教程和实战案例!🚀

相关推荐
方向研究13 小时前
集运指数欧线EC
区块链
软件工程小施同学1 天前
区块链论文速读 CCF A--CCS 2025 (2) 附pdf下载
网络·pdf·区块链
Web3_Daisy2 天前
Token 分红机制详解:实现逻辑、激励结构与风险分析
大数据·人工智能·物联网·web3·区块链
软件工程小施同学2 天前
区块链论文速读 CCF A--CCS 2025 (1) 附pdf下载
pdf·区块链
程序员cxuan3 天前
token 与比特币
区块链
MicroTech20253 天前
微算法科技(NASDAQ :MLGO)抗量子区块链技术:筑牢量子时代的数字安全防线
科技·算法·区块链
TechubNews3 天前
春寒未散,巨头收帆:Kraken 按停 IPO,蓄力待时
区块链
CryptoPP4 天前
使用API对接BSE交易所数据:完整技术实现指南
区块链
Black_mario4 天前
Plutus:Berachain 上的「Pendle + Convex」?
区块链
Web3VentureView4 天前
倒计时 12 小时,SYNBO 主网即将上线!
大数据·人工智能·金融·web3·区块链