元组( Tuple )
- 🌟 元组中的元素可以是不同的类型。元组的类型签名是
(T1, T2, ...), 这里T1,T2是相对应的元组成员的类型.
2. fn main() {
3. let _t0: (u8,i16) = (0, -1);
4. // 元组的成员还可以是一个元组
5. let _t1: (u8, (i16, u32)) = (0, (-1, 1));
6. // 填空让代码工作
7. let t: (u8, __, i64, __, __) = (1u8, 2u16, 3i64, "hello", String::from(", world"));
8. }
- 🌟 可以使用索引来获取元组的成员
2. // 修改合适的地方,让代码工作
3. fn main() {
4. let t = ("i", "am", "sunface");
5. assert_eq!(t.1, "sunface");
6. }
- 🌟 过长的元组无法被打印输出
2. // 修复代码错误
3. fn main() {
4. let too_long_tuple = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13);
5. println!("too long tuple: {:?}", too_long_tuple);
6. }
- 🌟 使用模式匹配来解构元组
2. fn main() {
3. let tup = (1, 6.4, "hello");
5. // 填空
6. let __ = tup;
8. assert_eq!(x, 1);
9. assert_eq!(y, "hello");
10. assert_eq!(z, 6.4);
11. }
- 🌟🌟 解构式赋值
1. fn main() {
2. let (x, y, z);
4. // 填空
5. __ = (1, 2, 3);
7. assert_eq!(x, 3);
8. assert_eq!(y, 1);
9. assert_eq!(z, 2);
10. }
- 🌟🌟 元组可以用于函数的参数和返回值
2. fn main() {
3. // 填空,需要稍微计算下
4. let (x, y) = sum_multiply(__);
6. assert_eq!(x, 5);
7. assert_eq!(y, 6);
8. }
10. fn sum_multiply(nums: (i32, i32)) -> (i32, i32) {
11. (nums.0 + nums.1, nums.0 * nums.1)
12. }
你可以在这里找到答案(在 solutions 路径下)
