rust 元组 -5

一,元组定义:

类型可不同:元组是几个值的集合,用小括号把几个值包起来,可以是不同类型的(特殊情况下可变)。
长度不可变: 元组有着固定的长度。而且一旦定义,就不能再增长或缩小。
下标:元组的下标从 0 开始。
声明一个元组  let tuple_name = (value1,value2,...);

二,创建元组

    
    let tuple_1 =  (); //空元组: ()
    let tuple_2 =  (0,); //只有一个值时,需要加逗号: (0,)
    let tuple_3 =  (1,true,3.14);//定义元组时也可以忽略数据类型
    let tuple_4: (i32,bool,f64) = (3,true,3.14);
    let tuple_of_tuples = ((1u8, 2u16), ( -1i8), -2i16);


    //打印元组数据
    println!("tuple_of_tuples is {:?}", tuple_of_tuples);//输出元组中的所有元素,必须使用 {:?} 格式化符。
    println!("just an integer: {:?}", (5u32,-1i8));

console:

    tuple_of_tuples is ((1, 2), -1, -2)
    just an integer: (5, -1)

三,获取元组值的两种方式

   //把元组赋值给变量
    let tuple_a: (i32,bool,f64) = (3,true,3.14);
    let (a,b,c) = tuple_a;
    println!("a={},b={},c={}",a,b,c);

    //元组通过.下标来获取其中的值,下标从0开始
    let tuple_b: (i32,bool,f64) = (3,true,3.14);
    let a = tuple_b.0;
    let b = tuple_b.1;
    let c = tuple_b.2;
    println!("a={},b={},c={}",a,b,c);

console:

    a=3,b=true,c=3.14
    a=3,b=true,c=3.14

四,元组的类型和值可变

    let mut tuple_c: (i32,bool,f64) = (3,true,3.14);
    tuple_c.0 = 6;//元素的值可以改变
    println!("{}",tuple_c.0);

    let mut tuple_d: (u16,bool,f64) = (255,true,3.14);
    let  num_u16_1:u16 = 65535;
    //tuple_d.0 = num_u16_1;//error  mismatched types  显示声明类型时,类型不可变
    println!("tuple_d is {:?}", tuple_d);

    let mut tuple_e = (255,true,3.14);//默认i32,bool,f64
    tuple_e.0 = num_u16_1;// 0 的类型被修改了:  u16,bool,f64
    println!("tuple_e is {:?}", tuple_e);
    let  num_u32_1:u32 = 4294967295;//隐式声明元组后,第一次被显示声明的改变后不可再次改变类型
    //tuple_e.0 = num_u32_1;//error  mismatched types

console:

    6
    tuple_d is (255, true, 3.14)
    tuple_e is (65535, true, 3.14)

 五,解构

tup 变量绑定到整个元组上,因为元组是一个单独的复合元素。为了从元组中获取单个值,可以使用模式匹配来解构元组值。或者直接结构声明,这个后期比较常用的方式。
    let tup = (2.0, 3.4, 1.1);
    let (x, y, z) = tup;
    println!(" x : {},y : {},z : {}", x,y,z);
    
    //或直接这样声明
    let (x, y, z) = (1,2,3);
    println!(" x : {},y : {},z : {}", x,y,z);
    //特殊类型需要特殊
    let (x, mut y, z) = (2.2,2,[1,3]);
    y+=1;
    println!(" x : {},y : {},z : {}", x,y,z[0]);

猜你喜欢

转载自blog.csdn.net/qq_39308071/article/details/112871824