複合型別是指多個數值組為一個型別
Rust 有兩個基本複合型別
元組型別是指將多個不同型別組成一個複合型別
固定長度,宣告好就無法增減長度
每一格都是一個獨立型別
// 宣告時就指定型別
let tup: (i32, f64, u8, &str) = (1, 3.1417, 1, "hello");
// 自動判斷型別的宣告方式
let tup = (1, 3.1417, 1, "hello");
println!("{:?}", tup);
輸出
(1, 3.1417, 1, "hello")
// 多維元組
let tup = ("1", ("2", ("3")));
元組也可以透過解構(destructuring)拆分各個型別
let tup: (i32, f64, u8, &str) = (1, 3.1417, 1, "hello");
// 解構成各個變數
let (a, b, c, d) = tup;
println!("{} {} {} {}", a, b, c, d);
輸出
1 3.1417 1 hello
也可以透過"."再加上索引位置來取得元組內的值
let tup: (i32, f64, u8, &str) = (1, 3.1417, 1, "hello");
// 索引從0開始
println!("{} {} {} {}", tup.0, tup.1, tup.2, tup.3);
輸出
1 3.1417 1 hello
和元組一樣固定長度,差別是陣列中的型別必須要一樣的
// 宣告時指定型別和長度i32是型別;之後的5是陣列的長度
let array: [i32; 5] = [1, 2, 3, 4, 5];
// 自動判斷型別的宣告方式
let array = [1, 2, 3, 4, 5];
// 簡化的宣告方式,陣列裡全是hello長度為5
let array = ["hello"; 5];
透果索引位址取值的方式
let a = [1, 2, 3, 4, 5];
println!("{} {} {} {} {}", a[0], a[1], a[2], a[3], a[4]);
輸出
1 2 3 4 5