Swift 语言存在两种类型:命名型类型和复合型类型。命名型类型是指定义时可以给定名字的类型。命名型类型包括类、结构体、枚举和协议。比如,一个用户定义类 MyClass
的实例拥有类型 MyClass
。除了用户定义的命名型类型,Swift 标准库也定义了很多常用的命名型类型,包括那些表示数组、字典和可选值的类型。
那些通常被其它语言认为是基本或原始的数据型类型,比如表示数字、字符和字符串的类型,实际上就是命名型类型,这些类型在 Swift 标准库中是使用结构体来定义和实现的。因为它们是命名型类型,因此你可以按照 第二十二章:扩展 和 扩展声明 中讨论的那样,声明一个扩展来增加它们的行为以满足你程序的需求。
复合型类型是没有名字的类型,它由 Swift 本身定义。Swift 存在两种复合型类型:函数类型和元组类型。一个复合型类型可以包含命名型类型和其它复合型类型。例如,元组类型 (Int, (Int, Int))
包含两个元素:第一个是命名型类型 Int
,第二个是另一个复合型类型 (Int, Int)
。
你可以在命名型类型和复合型类型使用小括号。但是在类型旁加小括号没有任何作用。举个例子,(Int)
等同于 Int
。
本节讨论 Swift 语言本身定义的类型,并描述 Swift 中的类型推断行为。
type
类型语法
类型 → 函数类型
类型 → 数组类型
类型 → 字典类型
类型 → 类型标识
类型 → 元组类型
类型 → 可选类型
类型 → 隐式解析可选类型
类型 → 协议合成类型
类型 → 不透明类型
类型 → 元型类型
类型 → 自身类型
类型 → Any
类型 → ( 类型 )
类型注解
类型注解显式地指定一个变量或表达式的类型。类型注解从冒号 (:
)开始, 以类型结尾,比如下面两个例子:
let someTuple: (Double, Double) = (3.14159, 2.71828)
func someFunction(a: Int) { /* ... */ }
在第一个例子中,表达式 someTuple
的类型被指定为 (Double, Double)
。在第二个例子中,函数 someFunction
的形参 a
的类型被指定为 Int
。
类型注解可以在类型之前包含一个类型特性的可选列表。
类型注解语法
type-annotation:类型注解 → : 特性列表可选 输入输出参数可选 类型