在上几期中我们学习了 Rust 提供的4中基本单量类型:整数、浮点数、布尔及字符基本数据类型,学习了 if 表达式用于使用条件控制代码流程,我们还编写了一个计算程序用于练习。如果你在完成练习的过程中遇到问题,欢迎通过平台给我们留言。接下来我们开始学习 Rust 提供的复合基本数据类型,也就是可以表示多条数据的类型。
在 Rust 中提供了俩种复合基本类型:第1个大家在数学课上应该都接触过就是数组(Array),第二个在数学课上应该没接触过叫元组(Tuple);
我们先来认识下 Rust 中的数组,在 Rust 中可以是使用中括号括表示一个数组像这样:
1
2
3 1 let a = [1, 2, 3, 4, 5];
2
3
中括号里的元素用逗号分隔,这样就声明了一个数组类型的变量a,它的值为包含1 ,2,3,4,5 的数组。
我们也可以在变量a的后面使用冒号声明a的类型如:
1
2
3 1 let a:[i32; 5] = [1,2 ,3,4,5]
2
3
其中 i32 表示数组里包含的元素的类型,5表示数组的长度也就是这个数组可以存放的元素条数。从这个定义形式我们可以看出,1.数组里的元素类型必须一致,要么都是 i32, 要么都是字符串。2.数组的长度是在创建数组时已经固定的。我们在编写代码的时候很多时候并不知道需要存储的元素的个数,怎么办呢?这个时候我们可以使用 Vector, 在编写计算程序的时候使用了一个 Vector 类型的变量存储用户输入的命令行参数, Vector 就是在 Rust 提供的基本数据类型数组的基础上增加可变长度的功能,以应对在某些场景下需要存储不定数量元素的需求。 Vector 是基于数组开发的,这也是为什么数组属于基本数据类型而 Vector 不是。跟 vector 一样我们可以使用下标获取数组里的元素,下标从0开始代表数组里的第1个元素,例如:
1
2
3 1 let first = a[0];
2
3
变量 first 的值为1也就是数组a的第1个元素。
1
2
3 1 let end = a[4];
2
3
变量 end 的值为5也就是数组 a 的第5个元素。
如果我们给的下标超过了数组的长度会怎么样的?!如:
1
2
3 1 let n = a[6];
2
3
这个程序会出现异常,并报一个错误提示我们数组的下标越界了,也就是超出了数组实际的元素数量。
学习了数组我们再来学习下另一个复合基本类型元组:在 Rust 中可以使用小括号表示一个元组,跟数组的中括号区别开来。例如:
1
2
3 1 let tup = (500, 8.8, 1);
2
3
跟数组一样,括号中的元素也是用逗号分隔,跟数组不一样的是元组中的元素可以是不同类型的,你可以把整数和字符同时放到一个元组里。我们也可以在变量的后面使用冒号小括号的方式为元组声明类型,例如:
1
2
3 1 let tup:(i32,f64,u8) = (500, 8.8, 1);
2
3
跟数组使用下标获取数组中元素一样元组也是使用下标,不一样的是数组使用中括号而元组使用点,就像这样:
1
2
3
4
5 1 let first = tup.0 ; // 变量 first 的值就是 500 了,也就是元组 tup 的第一个元素
2
3 let end = tup.2 ; // 变量 end 的值就是 1 了,也就是元组 tup 的第 3 个元素
4
5
学习了复合基本类型我们来做个练习题:
获取当前的月份,如果是 1 月就输出“现在是一月 ”,如果是 2 月就输出”现在是二月“,依次类推,想一下该怎么编写呢?!
免费进群交流
内容根据视频整理,相应视频内容可访问
51cto学院:
网易网校: