สนิม - ทูเพิล

ทูเพิลเป็นชนิดข้อมูลผสม ประเภทสเกลาร์สามารถจัดเก็บข้อมูลได้เพียงประเภทเดียว ตัวอย่างเช่นตัวแปร i32 สามารถเก็บค่าจำนวนเต็มได้เพียงค่าเดียว ในประเภทสารประกอบเราสามารถจัดเก็บได้มากกว่าหนึ่งค่าในแต่ละครั้งและอาจเป็นประเภทต่างๆ

สิ่งทอมีความยาวคงที่ - เมื่อประกาศแล้วว่าไม่สามารถขยายหรือย่อขนาดได้ ดัชนีทูเพิลเริ่มต้นจาก0.

ไวยากรณ์

//Syntax1
let tuple_name:(data_type1,data_type2,data_type3) = (value1,value2,value3);

//Syntax2
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

ภาพประกอบ

ตัวอย่างต่อไปนี้ส่ง tuple เป็นพารามิเตอร์ไปยังฟังก์ชัน Tuples ถูกส่งผ่านค่าไปยังฟังก์ชัน

fn main(){
   let b:(i32,bool,f64) = (110,true,10.9);
   print(b);
}
//pass the tuple as a parameter

fn print(x:(i32,bool,f64)){
   println!("Inside print method");
   println!("{:?}",x);
}

เอาต์พุต

Inside print method
(110, true, 10.9)

ทำลาย

การกำหนดทำลายเป็นลักษณะของสนิมที่เราแกะค่าของทูเปิล สิ่งนี้ทำได้โดยการกำหนดทูเพิลให้กับตัวแปรที่แตกต่างกัน

ลองพิจารณาตัวอย่างต่อไปนี้ -

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; //assigns a tuple to 
   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