复合类型
类型 | 字面量 | |
---|---|---|
数组(Arrays) | [T; N] | [20, 30, 40] , [0; 3] |
元组(Tuples) | () , (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!("t.0: {}", t.0); println!("t.1: {}", t.1); }
关键点:
数组:
-
A value of the array type
[T; N]
holdsN
(a compile-time constant) elements of the same typeT
. Note that the length of the array is part of its type, which means that[u8; 3]
and[u8; 4]
are considered two different types. -
我们可以使用字面量来为数组赋值。
-
在主函数中,打印(print)语句使用
?
格式请求调试实现。 使用参数{}
打印默认输出,{:?}
表示以调试格式输出。 我们也可以不在格式化字符串后面指定变量值,直接使用{a}
和{a:?}
进行输出。 -
添加
#
, 比如{a:#?}
, 会输出“美观打印(pretty printing)” 格式, 这种格式可能会更加易读。
元组:
-
和数组一样,元组也具有固定的长度。
-
元组将不同类型的值组成一个复合类型。
-
元组中的字段可以通过英文句号加上值的下标进行访问比如:
t.0
,t.1
。 -
空元组
()
也被称作 “单元(unit)类型”. 它既是一个类型, 也是这种类型的唯一值——也就是说它的类型和它的 值都被表示为()
。它通常用于表示,比如,一个 函数或表达式没有返回值,我们会在后续的幻灯片种见到这种用法。- 你可以将其理解为你可能在其他编程语言中比较熟悉的
void
类型
- 你可以将其理解为你可能在其他编程语言中比较熟悉的