在本文中,您將學(xué)習(xí)Swift中的類型別名及其用例。
類型別名允許您為程序中的現(xiàn)有數(shù)據(jù)類型提供新名稱。聲明類型別名后,可以在整個(gè)程序中使用別名代替現(xiàn)有類型。
類型別名不會(huì)創(chuàng)建新類型。它們只是為現(xiàn)有類型提供一個(gè)新名稱。
typealias 的主要目的是使我們的代碼更具可讀性,并且在上下文中更清晰易懂,以供人類理解。
使用 typealias 關(guān)鍵字聲明為:
typealias name = existing type
在Swift中,大多數(shù)類型都可以使用typealias。它們可以是:
內(nèi)置類型(例如:String, Int)
用戶定義的類型(例如:類,結(jié)構(gòu),枚舉)
復(fù)雜類型(例如:閉包)
您可以將typealias用于所有內(nèi)置數(shù)據(jù)類型,如String,Int,F(xiàn)loat等。
例如:
typealias StudentName = String
以上聲明允許
let name:StudentName = "Jack"
在不使用 typealias 的情況下,應(yīng)將string類型的常量聲明為:
let name:String = "Jack"
在以上兩個(gè)示例中,創(chuàng)建一個(gè)String類型常量。但是,使用 typealias 進(jìn)行聲明,我們的代碼將更具可讀性。
在許多情況下,您需要?jiǎng)?chuàng)建自己的數(shù)據(jù)類型。假設(shè)您要?jiǎng)?chuàng)建一個(gè)表示Student的類型,則可以使用以下類來(lái)創(chuàng)建它:
class Student { }
現(xiàn)在,一組學(xué)生可以表示為數(shù)組:
var students:Array<Student> = []
通過(guò)使用 typealias 為Array <Student>創(chuàng)建您自己的類型,可以使上述聲明更具可讀性:
typealias Students = Array<Student>
現(xiàn)在,我們可以使代碼更具可讀性:
var students:Students = []
讓我們?cè)俜治鲆粋€(gè)實(shí)例。假設(shè)我們有一個(gè)將閉包作為輸入?yún)?shù)的方法。
如果您不了解閉包,請(qǐng)不要擔(dān)心。只需將其視為一種特殊的函數(shù)即可。
func someMethod(oncomp:(Int)->(String)){ }
上面的示例將閉包作為someMethod的輸入。 該閉包采用Int值并返回String。
您可以看到 (Int)-> (String) 的使用對(duì)于開(kāi)發(fā)人員來(lái)說(shuō)沒(méi)有什么意義。你可以使用 typealias 為它提供一個(gè)新名稱:
typealias CompletionHandler = (Int)->(String)
現(xiàn)在,您可以將方法重寫為:
func someMethod(oncomp:CompletionHandler){ }
我們可以看到,使用typealias,相同的代碼看起來(lái)更加清晰并且對(duì)程序員友好。