# 《Move 学习》- "Hello, Move!" 示例

By [链上码农](https://paragraph.com/@0x879edd015b63e424e37fc5f5fdb684ba93908888) · 2024-12-26

---

"Hello, Move!" 示例 🚀

大家好！今天我们要一起探索 Move 语言的世界，从零开始创建一个简单的 "Hello, World!" 程序。无论你是区块链开发的新手，还是已经有一些编程经验，这篇文章都会带你轻松上手 Move 语言。我们将使用 Sui 的 Move CLI 工具，一步步完成包的创建、代码编写、编译和测试。准备好了吗？Let's go! 💻

📦 第一步：安装 Sui 并设置环境
-------------------

在开始之前，确保你已经安装了 Sui 并配置好了开发环境。如果你还没有安装，可以参考以下链接：

*   安装 Sui并设置 IDE 环境
    

安装完成后，运行以下命令检查 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 的教程和实战案例！🚀

---

*Originally published on [链上码农](https://paragraph.com/@0x879edd015b63e424e37fc5f5fdb684ba93908888/move-hello-move)*
