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

相关推荐
小赖同学啊21 小时前
物联网数据安全区块链服务
开发语言·python·区块链
CN-Dust21 小时前
【FMZ】数字货币程序化交易简介
区块链
数据与人工智能律师1 天前
数字资产革命中的信任之锚:RWA法律架构的隐形密码
大数据·网络·人工智能·云计算·区块链
小赖同学啊1 天前
区块链技术在物联网(IoT)中的核心应用场景
物联网·区块链
YSGZJJ1 天前
股指期货空头减仓说明了什么?
区块链
小赖同学啊1 天前
基于区块链的物联网(IoT)安全通信与数据共享的典型实例
物联网·安全·区块链
TechubNews2 天前
东方之珠·数链未来:香港回归28周年RWA革命赋能全球金融
区块链·稳定币
yoona10202 天前
在 Sepolia 上使用 Zama fhEVM 构建隐私代币与流动性池:全流程实战指南
区块链·隐私币·zama
选择不变2 天前
日线周线MACD指标使用图文教程,通达信指标
大数据·区块链·通达信指标公式·炒股技巧·短线指标·炒股指标
链上Sniper2 天前
智能合约状态快照技术:实现 EVM 状态的快速同步与回滚
java·大数据·linux·运维·web3·区块链·智能合约