? ??類型別名(Type Aliases)給已經(jīng)存在類型定義可代替的名字。可以使用typealias關(guān)鍵字定義類型別名计露。
? ? 如果你希望用一個更符合上下文的名字去引用一個已經(jīng)存在的類型孝冒,那么使用類型別名是非常合適的。比如你正在處理一個擁有特定位數(shù)的外部數(shù)據(jù):
? ??????typealias AudioSample = UInt16
? ? 只要你定義了一個類型別名郁轻,那么在那些你使用原來類型的地方,你都可以使用類型別名。
? ??????var maxAmplitudeFound = AudioSample.min // 0
? ? 這里好唯,因?yàn)锳udioSample是UInt16的別名竭沫。所以調(diào)用AudioSample.min其實(shí)相當(dāng)于調(diào)用UInt16.min,并把結(jié)果0作為初始化值賦給了maxAmplitudeFound
布爾值(Booleans)
????Swift提供了基本的布爾值類型骑篙,叫做Bool蜕提。布爾值被稱為邏輯值,因?yàn)椴紶栔抵豢梢允钦婊蛘呒侔卸恕wfit提供了2個布爾類型的常量值谎势,true和false。
????????let orangesAreOrange = true
????????let turnipsAreDelicious = false
? ? 上述的兩個常量由于使用布爾值字面量初始化杨名,會被推斷為布爾類型脏榆。和之前的Int類型和Double類型一樣,如果你在聲明常量或者變量的同時賦值了true或者false台谍,那么就不需要在聲明它們的類型為布爾類型须喂。當(dāng)聲明變量或者常量的時候使用其他類型已知的值進(jìn)行初始化,類型推斷可以幫助Swift代碼更加的精簡和可讀性更高趁蕊。
? ? 布爾值在 if 這類條件語句中是非常有用的:
? ??????if turnipsAreDelicious {
????????? ? print("Mmm, tasty turnips!")
????????} else {
????????? ? print("Eww, turnips are horrible.")
? ? ? ?}
? ??????// 打印 Eww, turnips are horrible.
? ? Swift類型安全的特性會防止非布爾類型代替布爾類型坞生。比如下面的例子會出現(xiàn)編譯錯誤:
? ??????let i = 1
????????if i {
????????? ? // 這個例子無法編譯通過,會報錯
????????}
當(dāng)然掷伙,下面的是可以正常編譯的:
? ??????let i = 1
????????if i==1 {
????????? ? // 這個例子可以成功編譯
????????}
? ? i==1表達(dá)式的結(jié)果是布爾類型恨胚,因此第二個例子可以通過類型檢查。和Swift中其他類型安全的例子一樣炎咖,這種方式可以避免一些頻率不高的錯誤并缺確保每個代碼塊所要表達(dá)的意圖足夠明確赃泡。