本期课程主要介绍Move的基本数据类型以及如何定义Move变量。
作者:Move小王子
今天听到一个很好的观点,对于普通人来说,对世界最大的贡献是让自己快乐。学习使我快乐。作为Move布道师,帮助别人学习也很快乐。
希望大家不要被面向资源编程这个概念给吓跑了(只是一只纸老虎),坚持学习。当然也不要太急功近利,技多不压身,学的技能多了,就会由量变产生质变。当学不动的时候,想想$1200美刀的时薪还没到手,有什么理由不学呢(开个玩笑)。
在前期的基础课程中,我将继续为大家一些Move的基础知识(后面会有进阶课程,但愿我能坚持下来,我也需要大家的鼓励,才会分泌更多的多巴胺)。前面我给大家介绍了如何安装Move环境,并且用一种简单的方式实现了一个最简版的HelloWorld,你入门了吗?本期课程主要介绍Move的基本数据类型以及如何定义Move变量。
语言嘛,其实都差不多。如果有其他高级语言的编程经验,比如Python、Java、Golang、Rust等等,那么你可以跨过本期内容了。真的没啥可讲的。
Move主要有3类基本数据类型:
除了上面提到的基本数据类型,数组也是最常用的数据类型,所以这里把数组也一起讲了。Move的数组类型是vector。关于vector类型有3个需要说明的地方:
我们这里以Move官方版本为准,使用上面介绍的这些基本数据类型和数组定义Move变量。
Move是mini版的Rust(开玩笑),Move借鉴了很多Rust的思想。Move在定义变量的时候,也跟Rust一样,使用了let关键字。
//变量定义
let _a:u8 = 1;
let _b: u8;
_b = 10;
let c = 2u64;
// 类型强转
let _d = c as u128;
let _e = c as u8
上面既介绍了整型变量的定义方式,也介绍了如何类型强转。
let _flag = true
let _addr1: address;
_addr1 = @test_addr;
let _addr2 = 0x1;// 确定的地
这里的地址类型需要注意一下:test_address是在Move.toml文件里面定义好的地址,通过@
引用。
let _hello_world = b"hello_world";// 字符串会根据ASCII转换成u8数组
let _boxes: vector<u64> = std::vector::empty<u64>();// 通过std::vector定义vector<u64>类型的数组
注意一下,数组类型的两个例子很有代表性。
常量
const ADDR: address = @test_addr;
const FASLE: bool = false
常量是通过const关键字定义的,必须放在方法外面定义。
我们看一下上面这些例子的完整代码:
script {
const ADDR: address = @test_addr;
const FASLE: bool = false;
fun main() {
let _a:u8 = 1;
let _b: u8;
_b = 10;
let c = 2u64;
let _d = (c as u128);
let _e = (c as u8);
let _flag = true;
let _addr1: address;
_addr1 = @test_addr;
let _addr2 = 0x1;
let _hello_world = b"hello_world";
let _boxes: vector<u64> = std::vector::empty<u64>();
}
}
这里注意一下变量前面的下划线_
,如果定义的变量在后面没有被使用到,编译的时候会抛错,使用_
表示你知道后面没被使用,在内存中可以快速回收掉,编译器在编译的时候不会报错。这也是Rust的风格。
最后,编译一下代码:
move buil
好了,今天主要是教大家Move的基础数据类型,并且通过基础数据类型定义变量和常量。这里划重点,Move跟其他语言的不同,以及很多Move编程需要注意的细节。
下期我们将会介绍Move的函数定义。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!