元组和元组索引表达式
元组达式
语法
元组表达式 :
(
元组元素组?)
元组表达式 构造了 元组值 。
元组表达式的语法是括号包围的、用逗号分隔的表达式列表,称为 元组初始化操作数 。 一元组表达式需要在其元组初始化操作数后面加上逗号,以与 圆括号表达式 区分。
元组表达式是 值表达式 ,它的结果是一个新构造的元组类型的值。
元组初始化操作数的数量是构造的元组的元的数量。
没有元组初始化操作数的元组表达式会产生一个单元元组。
对于其他元组表达式,第一个写入的元组初始化操作数初始化字段 0
,随后的操作数初始化下一个最高的字段。
例如,在元组表达式 ('a', 'b', 'c')
中, 'a'
初始化字段 0
的值, 'b'
初始化字段 1
的值, 'c'
初始化字段 2
的值。
以下是一些元组表达式及其类型的示例:
表达式 | 类型 |
---|---|
() | () (单元) |
(0.0, 4.5) | (f64, f64) |
("x".to_string(), ) | (String, ) |
("a", 4usize, true) | (&'static str, usize, bool) |
元组索引表达式
元组索引表达式的语法是一个表达式,即 元组操作数 ,后跟一个点号 ( .
) ,最后是一个元组索引。
元组索引的语法是一个 十进制字面值 ,没有前导零、下划线或后缀。
例如,0
和 2
是有效的元组索引,但 01
、 0_
和 0i32
无效。
元组操作的类型必须是 元组类型 或 元组结构体 的一种。 元组索引必须是元组操作类型中与之同名的字段。
求值元组索引表达式除了求值其元组操作之外没有任何副作用。 作为 占位表达式 ,它将求值元组操作中与元组索引同名的字段的位置。
元组索引表达式的示例如下:
#![allow(unused)] fn main() { // 对元组进行检索 let pair = ("a string", 2); assert_eq!(pair.1, 2); // 对元组结构体进行检索 struct Point(f32, f32); let point = Point(1.0, 0.0); assert_eq!(point.0, 1.0); assert_eq!(point.1, 0.0); }
注意: 与字段访问表达式不同,元组索引表达式可以作为 调用表达式 的函数操作,因为它不能与方法调用混淆,因为方法名称不能是数字。
注意: 尽管数组和切片也有元素,但必须使用 数组或切片索引表达式 或 切片模式 来访问它们的元素。