# move语言编写初体验

By [Untitled](https://paragraph.com/@0xf21a3a0943241cd2967517cfd075bca4fdeeb5df) · 2022-09-12

---

1 介绍
====

move语言被称为是最适合编写智能合约的编程语言之一，它具有面向资源编程、纯静态语言、形式化验证、分散存储、面向泛型编程等特点。

从本节开始，我们将开始进入move语言的学习。

2 开发环境搭建
========

进行move开发主要需要安装Move CLI，安装命令如下：

    cargo install --git https://github.com/move-language/move move-cli --branch main
    

安装好后可以用如下命令查看版本信息：

    move --version
    

3 第一个工程
=======

在终端下通过如下命令创建一个move工程：

    move new example1
    

创建工程后，目录中会有一个Move.toml和sources文件夹，我们要写代码主要在sources中。

在move中，有两种类型的文件，分别modules和transaction scripts（关于这两部分具体的内容我们后面再学习），此处我们就分别创建两种类型的文件。

3.1 修改依赖
--------

由于生成项目默认给的Move标准库是Git地址很慢，所以可以使用aptos项目中的整理好的库来代替，我将aptos的代码放在当前工程的外层的外层，修改我的toml文件如下：

    [package]
    name = "example1"
    version = "0.0.0"
    
    [dependencies]
    MoveStdlib = { local = "../../aptos-core/aptos-move/framework/move-stdlib" }
    AptosStdlib = { local = "../../aptos-core/aptos-move/framework/aptos-stdlib" }
    # MoveStdlib = { git = "https://github.com/move-language/move.git", subdir = "language/move-stdlib", rev = "main" }
    
    [addresses]
    std =  "0x1"
    

3.2 创建模块
--------

*   新建模块 在sources文件夹下添加Coin.move文件，内容如下：
    

    address 0x2 {
        module Coin {
            struct Coin has drop {
                value: u64,
            }
    
            public fun mint(value: u64): Coin {
                Coin { value }
            }
    
            public fun value(coin: &Coin): u64 {
                coin.value
            }
    
            public fun burn(coin: Coin): u64 {
                let Coin { value } = coin;
                value
            }
        }
    }
    

*   编译模块
    

编译命令如下：

    move build
    

*   编译及发布模块
    

编译及发布模块的命令如下：

    move sandbox publish -v
    

3.3 在脚本中调用模块
------------

*   编写脚本
    

在sources下添加test-coin.move文件，内容如下：

    script {
        use std::debug;
        use 0x2::Coin;
    
        fun main() {
            let coin = Coin::mint(100u64);
            debug::print(&Coin::value(&coin));
            Coin::burn(coin);
        }
    }
    

*   调用脚本
    

命令如下：

    move sandbox run sources/test-coin.move
    

可以看到，终端上将打印：

    [debug] 100
    

至此，整个环境就弄好了，后面我们正式进入move语言的学习。

4 参考文档
======

[https://learnblockchain.cn/article/4512](https://learnblockchain.cn/article/4512)

---

*Originally published on [Untitled](https://paragraph.com/@0xf21a3a0943241cd2967517cfd075bca4fdeeb5df/move)*
