- 作者:老汪软件技巧
- 发表时间:2024-12-27 00:29
- 浏览量:
"Hello, Move!" 示例
大家好!今天我们要一起探索 Move 语言的世界,从零开始创建一个简单的 "Hello, World!" 程序。无论你是区块链开发的新手,还是已经有一些编程经验,这篇文章都会带你轻松上手 Move 语言。我们将使用 Sui 的 Move CLI 工具,一步步完成包的创建、代码编写、编译和测试。准备好了吗?Let's go!
第一步:安装 Sui 并设置环境
在开始之前,确保你已经安装了 Sui 并配置好了开发环境
安装完成后,运行以下命令检查 Sui 是否安装成功:
sui client --version
如果看到类似 sui-client 1.22.0-036299745 的输出,恭喜你,Sui 已经准备就绪!
️ 第二步:创建一个新包
Move 程序以包(Package)为单位进行管理。要创建一个新包,我们可以使用 sui move new 命令。我们的第一个程序命名为 hello_world,运行以下命令:
sui move new hello_world
这个命令会在当前目录下创建一个名为 hello_world 的文件夹,里面包含了 Move 包的基本结构。我们可以通过 ls 命令查看文件夹内容:
ls -l hello_world
你会看到以下文件:
Move.toml
sources
tests
目录结构解析
Move CLI 为我们自动生成了包的目录结构,让我们来看看每个文件的作用:
hello_world
├── Move.toml # 包清单文件,包含包的配置和依赖
├── sources # 源代码目录
│ └── hello_world.move # 主模块文件
└── tests # 测试代码目录
└── hello_world_tests.move # 测试模块文件
1. Move.toml:包清单
Move.toml 是包的配置文件,定义了包的元数据和依赖项。默认情况下,它会为包生成一个命名地址:
[addresses]
hello_world = "0x0"
2. sources/hello_world.move:主模块
这是我们的主模块文件,Move CLI 已经为我们生成了一些注释代码:
/*
/// 模块:hello_world
module hello_world::hello_world;
*/
3. tests/hello_world_tests.move:测试模块
测试模块用于编写单元测试,默认情况下也是注释掉的:
/*
#[test_only]
module hello_world::hello_world_tests;
*/
️ 第三步:编写 "Hello, World!" 代码
现在,让我们在 sources/hello_world.move 中编写一个简单的 "Hello, World!" 函数。将文件内容替换为以下代码:
/// 位于命名地址 `hello_world` 下的模块 `hello_world`。
module hello_world::hello_world;
// 从标准库中导入 `String` 类型
use std::string::String;
/// 返回 "Hello, World!" 作为 `String`。
public fun hello_world(): String {
b"Hello, World!".to_string()
}
这段代码定义了一个名为 hello_world 的函数,它会返回一个 "Hello, World!" 字符串。
第四步:编译包
Move 是一种编译语言,我们需要将代码编译为字节码。运行以下命令来编译包:
sui move build
如果一切顺利,你会看到以下输出:
UPDATING GIT DEPENDENCY https://github.com/MystenLabs/sui.git
INCLUDING DEPENDENCY Sui
INCLUDING DEPENDENCY MoveStdlib
BUILDING hello_world
第五步:编写并运行测试
在发布代码之前,我们需要确保它能够正常工作。让我们在 tests/hello_world_tests.move 中编写一个简单的测试:
#[test_only]
module hello_world::hello_world_tests;
use hello_world::hello_world;
#[test]
fun test_hello_world() {
assert!(hello_world::hello_world() == b"Hello, World!".to_string(), 0);
}
运行以下命令来执行测试:
sui move test
如果测试通过,你会看到以下输出:
INCLUDING DEPENDENCY Sui
INCLUDING DEPENDENCY MoveStdlib
BUILDING hello_world
Running Move unit tests
[ PASS ] 0x0::hello_world_tests::test_hello_world
Test result: OK. Total tests: 1; passed: 1; failed: 0
总结
恭喜你!你已经成功创建了第一个 Move 程序,并完成了编译和测试。通过这个简单的 "Hello, World!" 示例,我们学习了如何创建包、编写模块、编译代码以及运行测试。接下来,你可以继续探索 Move 语言的更多功能,比如编写更复杂的模块、处理交易和与区块链交互。
如果你对 Move 语言感兴趣,记得关注我,后续我会带来更多关于 Move 和 Sui 的教程和实战案例!