Rust编程与项目实战-元组

【图书介绍】《Rust编程与项目实战》-CSDN博客

《Rust编程与项目实战》(朱文伟,李建英)【摘要 书评 试读】- 京东图书 (jd.com)

Rust编程与项目实战_夏天又到了的博客-CSDN博客

8.2.1 元组的定义

元组是Rust的内置复合数据类型。Rust支持元组,而且元组是一个复合类型。我们知道,标量类型只能存储一种类型的数据。例如一个i32类型的变量只能存储一个数字。复合类型可以存储多个不同类型的数据。复合类型就像我们的菜篮子,里面可以放各种类型的菜。

元组可以将其他不同类型的多个值组合到一个复合类型中。元组还拥有一个固定的长度:无法在声明结束后增加或减少其中的元素数量。通常使用逗号分隔后放置到一对圆括号中创建一个元组。元组每个位置的值都有一个类型,这些类型不需要相同。元组是一个可以包含各种类型值的组合,是把几个类型组合到一起的最简单的方式。元组使用一对圆括号"()"来构造。如果元组中只包含一个元素,应该在后面添加一个逗号,以区分表达式和元组。

值得注意的是,元组有着固定的长度。而且一旦定义,就不能再增长或缩小。元组的下标从0开始。Rust中元组的定义很简单,就是使用一对圆括号把所有元素放在一起,元素之间使用逗号分隔。定义元组数据类型的时候也是一样的。在Rust语言中,元组的定义语法格式如下:

let tuple_name:(data_type1,data_type2,data_type3,..., data_typeN) = (value1,value2,value3,...,valueN);

定义元组时也可以忽略数据类型,比如:

let tuple_name = (value1,value2,value3,...,valueN);

但需要注意的是,如果显式指定了元组的数据类型,那么数据类型的个数必须和元组的个数相同,否则会报错。比如我们定义一个元组:

let tuple:(i32,f64,u8) = (-325,4.9,22);

8.2.2 元组的输出

如果要输出元组中的所有元素,必须使用{:?}格式化符。

fn main() {

    let tuple:(i32,f64,u8) = (-325,4.9,22);

    println!("{:?}",tuple);

}

编译运行以上Rust代码,输出结果如下:

(-325, 4.9, 22)

仅仅使用下面的输出语句是不能输出元组中的元素的。

println!("{ }",tuple)

这是因为元组是一个复合类型,要输出复合类型的数据,必须使用println!("{:?}", tuple_name)。

8.2.3 访问元组中的单个元素

我们可以使用元组名.索引数字来访问元组中相应索引位置的元素,索引从0开始。例如下面这个拥有3个元素的元组:

let tuple:(i32,f64,u8) = (-325,4.9,22);

可以通过下面的方式访问各个元素:

tuple.0  // -325

tuple.1  // 4.9

tuple.2  // 22

下面的范例演示如何通过元组名.索引数的方式输出元组中的各个元素,代码如下:

fn main() {

    let tuple:(i32,f64,u8) = (-325,4.9,22);

    println!("integer is :{:?}",tuple.0);

    println!("float is :{:?}",tuple.1);

    println!("unsigned integer is :{:?}",tuple.2);

}

编译运行以上Rust代码,输出结果如下:

integer is :-325

float is :4.9

unsigned integer is :2

再来看一个范例:

fn main() {
    //包含各种不同类型的元组
    let long_tuple = (
        1u8, 2u16, 3u32, 4u64, -1i8, -2i16, -3i32, -4i64, 0.1f32, 0.2f64, 'a', true,
    );

    //通过元组的下标来访问具体的值
    println!("long tuple first value: {}", long_tuple.0);
    println!("long tuple second value: {}", long_tuple.1);
    println!("long_tuple: {:?}", long_tuple);

    //元组也可以充当元组的元素
    let tuple_of_tuples = ((1u8, 2u16, 2u32), (4u64, -1i8), -2i16);

    //元组可以打印
    println!("tuple of tuples: {:?}", tuple_of_tuples);

    //但很长的元组无法打印
    //let too_long_tuple = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13);
    //println!("too long tuple: {:?}", too_long_tuple);

    //创建单元素元组需要一个额外的逗号,这是为了和被括号包含的字面量进行区分
    println!("one element tuple: {:?}", (5u32,));
    println!("just an integer: {:?}", (5u32));
}

结果输出:

long tuple first value: 1
long tuple second value: 2
long_tuple: (1, 2, 3, 4, -1, -2, -3, -4, 0.1, 0.2, 'a', true)
tuple of tuples: ((1, 2, 2), (4, -1), -2)
one element tuple: (5,)
just an integer: 5
相关推荐
长潇若雪7 分钟前
结构体(C 语言)
c语言·开发语言·经验分享·1024程序员节
feilieren10 分钟前
leetcode - 684. 冗余连接
java·开发语言·算法
Peter44718 分钟前
-bash: ./my_rename.sh: /bin/bash^M: bad interpreter: No such file or directory
开发语言·bash
余~1853816280020 分钟前
矩阵系统源码搭建,OEM贴牌技术
网络·人工智能·线性代数·算法·矩阵
The Future is mine20 分钟前
Java根据word模板导出数据
java·开发语言
ChinaDragonDreamer21 分钟前
HarmonyOS:@Watch装饰器:状态变量更改通知
开发语言·harmonyos·鸿蒙
Tianwen_Burning30 分钟前
Halcon相机外参自理解
算法
一颗甜苞谷33 分钟前
开源一款前后端分离的企业级网站内容管理系统,支持站群管理、多平台静态化,多语言、全文检索的源码
java·开发语言·开源
星夜孤帆33 分钟前
Java面试题集锦
java·开发语言
论迹41 分钟前
【Java】-- 接口
java·开发语言