31.3. 元组类型

*元组类型*是使用括号括起来的零个或多个类型,类型间用逗号隔开。

你可以使用元组类型作为一个函数的返回类型,这样就可以使函数返回多个值。你也可以命名元组类型中的元素,然后用这些名字来引用每个元素的值。元素的名字由一个标识符紧跟一个冒号 (:) 组成。 函数和多返回值 章节里有一个展示上述特性的例子。

当一个元组类型的元素有名字的时候,这个名字就是类型的一部分。

var someTuple = (top: 10, bottom: 12)  // someTuple 的类型为 (top: Int, bottom: Int)
someTuple = (top: 4, bottom: 42) // 正确:命名类型匹配
someTuple = (9, 99)              // 正确:命名类型被自动推断
someTuple = (left: 5, right: 5)  // 错误:命名类型不匹配

所有的元组类型都包含两个及以上元素, 除了 VoidVoid 是空元组类型 () 的别名。

元组类型语法

  • tuple-type:元组类型( ) | ( 元组类型元素 , 元组类型元素列表 )
  • tuple-type-element-list:元组类型元素列表 → 元组类型元素 | 元组类型元素 , 元组类型元素列表
  • tuple-type-element:元组类型元素 → 元素名 类型注解 | 类型
  • element-name:元素名 → 标识符