类型别名(Type Aliases)给已经存在类型定义可代替的名字。可以使用typealias关键字定义类型别名。
如果你希望用一个更符合上下文的名字去引用一个已经存在的类型,那么使用类型别名是非常合适的。比如你正在处理一个拥有特定位数的外部数据:
typealias AudioSample = UInt16
只要你定义了一个类型别名,那么在那些你使用原来类型的地方,你都可以使用类型别名。
var maxAmplitudeFound = AudioSample.min // 0
这里,因为AudioSample是UInt16的别名。所以调用AudioSample.min其实相当于调用UInt16.min,并把结果0作为初始化值赋给了maxAmplitudeFound
布尔值(Booleans)
Swift提供了基本的布尔值类型,叫做Bool。布尔值被称为逻辑值,因为布尔值只可以是真或者假。Swfit提供了2个布尔类型的常量值,true和false。
let orangesAreOrange = true
let turnipsAreDelicious = false
上述的两个常量由于使用布尔值字面量初始化,会被推断为布尔类型。和之前的Int类型和Double类型一样,如果你在声明常量或者变量的同时赋值了true或者false,那么就不需要在声明它们的类型为布尔类型。当声明变量或者常量的时候使用其他类型已知的值进行初始化,类型推断可以帮助Swift代码更加的精简和可读性更高。
布尔值在 if 这类条件语句中是非常有用的:
if turnipsAreDelicious {
print("Mmm, tasty turnips!")
} else {
print("Eww, turnips are horrible.")
}
// 打印 Eww, turnips are horrible.
Swift类型安全的特性会防止非布尔类型代替布尔类型。比如下面的例子会出现编译错误:
let i = 1
if i {
// 这个例子无法编译通过,会报错
}
当然,下面的是可以正常编译的:
let i = 1
if i==1 {
// 这个例子可以成功编译
}
i==1表达式的结果是布尔类型,因此第二个例子可以通过类型检查。和Swift中其他类型安全的例子一样,这种方式可以避免一些频率不高的错误并缺确保每个代码块所要表达的意图足够明确。