复合类型
类型 | 字面量 | |
---|---|---|
数组 | [T; N] | [20, 30, 40] , [0; 3] |
元组 | () , (T,) , (T1, T2) , … | () , ('x',) , ('x', 1.2) , … |
数组赋值和访问:
fn main() { let mut a: [i8; 10] = [42; 10]; a[5] = 0; println!("a: {:?}", a); }
元组赋值和访问:
fn main() { let t: (i8, bool) = (7, true); println!("1st index: {}", t.0); println!("2nd index: {}", t.1); }
要点:
数组:
-
数组有相同类型的元素,类型是
T
,长度是N
,这是一个编译期常量。注意数组的长度是其类型的一部分,也就是说[u8; 3]
和[u8; 4]
被视为两种不同的类型。 -
我们可以使用字面量给一个数组赋值。
-
在 main 函数中,print 语句使用
?
格式参数请求 debug 实现:{}
给出默认输出,{:?}
给出 debug 输出。我们也可以用{a}
和{a:?}
而不用在格式化字符串后面指定值。 -
添加
#
,比如{a:#?}
,会调用 “漂亮的打印” 格式,这样更容易阅读。
元组:
-
和数组一样,元组有一个固定长度。
-
元组将不同类型的值组合为一个复合类型。
-
元组的字段可以通过句点和值的索引访问,比如
t.0
,t.1
。 -
空元组
()
也被叫做 “单元类型”,它既是一个类型,也是这个类型唯一有效的值 - 也就是说它的类型和值都使用()
表示,它常被用于,比如,表示一个函数或表达式没有返回值,我们会在后面的幻灯片看到这个。- 你可以把它当作其它语言的
void
,这会让你觉得很熟悉。
- 你可以把它当作其它语言的