Rust 基础知识3 - 复合类型

简介

  • 接上回书

Tuple 类型

  • Tuple 可以将多个类型的值同时放到一个类型里。
  • Tuple 的长度是固定的,长度一旦声明就无法改变。(注意仅仅是长度)
  • 创建Tuple 在小括号里将值用逗号分开,Tuple中每个位置都对应一个类型,Tuple元素的类型不必分开。
  • 读取方式分为 .num 方式,和结构方式(destructure),参考如下代码吧:
// 请注意读取里面的注释:
fn main() {
    // Tuple 测试
    let mut tuple_1 = ("Hello", 39, "Years");
    let tuple_2:(i32, &str ) = (1983, "since.");

    // 注意,Tuple 是可以声明为 mut (可变的)
    tuple_1.0 = "Hi"; // 尝试修改值,注意这里不能加let
    // 通过 .num 进行访问Tuple 的值
    println!("{} {} {}", tuple_1.0, tuple_1.1, tuple_1.2);

    // 通过变量形式解构 tuple_2 变量,注意let 就不要指定type了,因为Tuple 定义时已经明确了类型
    let (a,b) = tuple_2;
    println!("{} {}", a, b);
}
image.png

数组类型

  • 如果想让数据存放在stack 栈上面而不是heap(堆)上,或者想保有固定数量的元素数组是比较好的选择。
  • 数组的灵活性不如 Vector,Vector和数组类似,它由标准库提供,它的长度可以改变,如果不确定是用数组还是Vector,那么应该选择Vector,实际上Vector就是链表概念。
  • 数组的类型是统一的,声明一个数组可以 let a:[i32; 5]需要注意的是括号中间是分号;不要写错。
  • 数组默认初始化填充方式,如果我们需要一个数组中默认填充1,那么可以使用let a=[1;3],注意后面括号中的中间字符仍然是分好,第一个值表示默认值,第二个值表示数组长度,
  • 举个栗子:
fn main() {
    // 1、数组的类型必须一致
    // let arr_test = [1,"A",1.0]; // 这个无法通过编译因为数组的元素类型必须一致

    // 2、标准的创建数组方式。
    let arr_test:[u8; 3] = [1,2,3];
    println!("Number is {},{},{}", arr_test[0],arr_test[1],arr_test[2]);

    // 不指定类型,让编译器识别类型的创建方式,如下会识别为 &str
    let arr_test = ["I","love","you"];
    println!("You said : {} {} {}", arr_test[0],arr_test[1],arr_test[2]);

    // 自动填充方式,初始化数组,整数自动识别为i32
    let arr_test = [1;3]; //注意这里也是分好不要搞错了
    println!("Call Num : {}&{}&{}", arr_test[0],arr_test[1],arr_test[2]);
}
image.png

结束

  • 感谢阅读

你可能感兴趣的:(Rust 基础知识3 - 复合类型)