From fa0f93b2973a40a6624dfb4e68dffef71e31d0e5 Mon Sep 17 00:00:00 2001 From: Hurry_upp <335247945@qq.com> Date: Sun, 4 Jul 2021 22:23:06 +0800 Subject: [PATCH] Add new file --- ...5\246\344\271\240\350\256\260\345\275\225" | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 "\345\255\246\344\271\240\350\256\260\345\275\225/day2_7.3\345\255\246\344\271\240\350\256\260\345\275\225" diff --git "a/\345\255\246\344\271\240\350\256\260\345\275\225/day2_7.3\345\255\246\344\271\240\350\256\260\345\275\225" "b/\345\255\246\344\271\240\350\256\260\345\275\225/day2_7.3\345\255\246\344\271\240\350\256\260\345\275\225" new file mode 100644 index 0000000..a0df54a --- /dev/null +++ "b/\345\255\246\344\271\240\350\256\260\345\275\225/day2_7.3\345\255\246\344\271\240\350\256\260\345\275\225" @@ -0,0 +1,51 @@ +1 学习目标 +1.1 把Rust语法用例子全部练习一遍 + +2 学习笔记 +2.1 Vec +Vec常用作动态数组,特点可变长、数据类型相同的一个集合 +新建方式:1 let mut v: Vec = Vec::new() 空的动态数组 + 2 let mut v: Vec = Vec::with_capacity(10) 指定容量的数组 + 3 let mut v = vec![1,2,3] 运用Vec!宏新建一个动态数组,且让编译器自动推导数据的类型 +为啥要创建指定容量大小的数组:由于数组是动态增长的,每次扩充都会带来新的系统开销,如果能提前预估到所需要用到的数组的大小,就不需要有频繁的系统开销 + 一定程度上加快了程序运行的速度。 +插入数据:1 push 在尾部插入 + 2 使用 [] 定位赋值,可以指定位置切换元素 +删除数据:1 pop 弹出最后一位数据,以some()的形式弹出。这个some形式有很多好处,在后面章节会有讲到。 + 2 remove 指定删除某个位置的元素,如果删除的索引越界就会报错。 +数组访问:1 直接通过[]索引来访问,如果索引越界就会报错 + 2 通过get方法来获取,返回的是some形式,如some(3) +2.2 VecDeque +2.3 Hashmap +VecDeque和Hashmap的内容与vec大同小异,只是给的api不一样。 +2.4 字符串 +字符串还是比较有意思的,分为字面量str和字符串string。 +2.4.1 str +str称为字面量,是固定长度的字符串,创建以后就不能再次修改了。 +2.4.2 string +string是真正意义上的字符串,能与字面量str直接用运算符进行运算。 + +3 循环 +3.2 loop无限循环 +无需判断条件直接无限循环范围类的代码,直到beak +3.3 while +while是一个循环,需要有条件判断 +3.3 continue 和 break +这两个关键字都有退出循环的作用。 +区别: +continue:结束当次循环,不再执行continue以后的代码 +break: 结束所有循环。直接退出loop或者while + +3.4 match语法 +例子 ://match 需要穷尽所有的模式情况 因此需要有 _符号来代表其他所有的模式 +match age{ + 0 => println!("this is 0"), + 1..=4 => println!("this is 1-4"), + _ => println!("nothing"), +} +语法糖: rust提供用if let 的语法糖来简化这个穷尽所有的模式的情况 +//仅仅符合要求才执行 +例子: +if let Some(7) = value{ + println!("seven"), +}; -- GitLab