元组是复合数据类型,标量类型只能存储一种类型的数据,如一个i32变量只能存储一个整数值。在复合类型中,我们可以存储多个值,并且可以是不同类型。
元组的长度是固定的,一旦声明,它们就无法增长或缩小,元组索引从 0 开始。
Tuple - 语法
//语法1 let tuple_name:(data_type1,data_type2,data_type3)=(value1,value2,value3); //语法2 let tuple_name=(value1,value2,value3);
以下示例在元组中显示值。
fn main() { let tuple:(i32,f64,u8)=(-325,4.9,22); println!("{:?}",tuple); }
println!(" {}",tuple)语法不能用于显示元组中的值。这是因为元组是复合类型。使用 println!(" {:?}",tuple_name)语法在元组中打印值。
(-325, 4.9, 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); }
integer is :-325 float is :4.9 unsigned integer is :2
以下示例将元组作为参数传递给函数,元组通过值传递给函数。
fn main(){ let b:(i32,bool,f64)=(110,true,10.9); print(b); } //将元组作为参数传递 fn print(x:(i32,bool,f64)){ println!("Inside print method"); println!("{:?}",x); }
Inside print method (110, true, 10.9)
Tuple - 构造解析
构造解析是Rust的一个特征,其中我们拆开元组的值,这是通过将元组分配给不同的变量来实现的。
考虑以下示例-
fn main(){ let b:(i32,bool,f64)=(30,true,7.9); print(b); } fn print(x:(i32,bool,f64)){ println!("Inside print method"); let (age,is_male,cgpa)=x; //将数据分配给一个元组 distinct variables println!("Age is {} , isMale? {},cgpa is {}",age,is_male,cgpa); }
变量 x 是分配给let语句的元组。每个变量-age,is_male和cgpa将在元组中包含相应的值。
Inside print method Age is 30 , isMale? true,cgpa is 7.9