Rust-reference/expressions/tuple-expr

来自菜鸟教程
跳转至:导航、​搜索

Tuple and tuple indexing expressions

元组和元组索引表达式

tuple-expr.md

commit: 9cf1343f31db47d93d58822e3613c07beaf5f62d
本章译文最后维护日期:2020-11-12

Tuple expressions

元组表达式

句法

TupleExpression :
   ( InnerAttribute* TupleElements? )

TupleElements :
   ( Expression , )+ Expression?

元组表达式的求值就是将其操作数初始化为元组值的元素。

元组表达式的编写方法是在逗号分隔的圆括号列表中列出操作数。一元(1-ary)元组表达式的操作数后面需要一个逗号,以便能和括号表达式区分开来。

操作数的数量构成元组的元数(arity)。没有操作数的元组表达式生成单元元组(unit tuple)。对于其他元组表达式,第一个被写入的操作数初始化第 0 个元素,随后的操作数依次初始化下一个开始的元素。例如,在元组表达式 ('a', 'b', 'c') 中,'a' 初始化第 0 个元素的值,'b' 初始化第 1 个元素,'c' 初始化第2个元素。

元组表达式示例:

表达式 类型
() () (unit)
(0.0, 4.5) (f64, f64)
("x".to_string(), ) (String, )
("a", 4usize, true) (&'static str, usize, bool)

Tuple expression attributes

元组表达式上的属性

在允许块表达式上的属性存在的那几种表达式上下文中,可以在元组表达式的左括号后直接使用内部属性

Tuple indexing expressions

元组索引表达式

句法

TupleIndexingExpression :
   Expression . TUPLE_INDEX

元组索引表达式的计算类似于[[.././field-expr#field-access-expressions|字段访问表达式]],但是访问的是元组元组结构体的元素。

元组索引表达式被写成操作数,后跟 .,以及一个元组索引。索引必须写成十进制字面量的形式,不能有前导零、下划线和后缀。元组索引表达式的操作数必须是元组或元组结构体类型。如果元组索引不是元组或元组结构体的元素,则报编译错误。

元组索引表达式示例:

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);

注意: 与字段访问表达式不同,元组索引表达式可以是[[.././call-expr|调用表达式]]的函数操作数。(这之所以可行,)因为元组索引表达式不会与方法调用相混淆,因为方法名不可能是数字。