Tuple and tuple indexing expressions
元组和元组索引表达式
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|调用表达式]]的函数操作数。(这之所以可行,)因为元组索引表达式不会与方法调用相混淆,因为方法名不可能是数字。