聲明擴展的語法格式如下:
extension 類型名 { //添加新功能 }
聲明擴展的關鍵字是extension,“類型名”是Swift中已有的類型,包括類、結構體和枚舉,但是我們仍然可以擴展整型、浮點型、布爾型、字符串等基本數據類型,這是因為這些類型本質上也是結構體類型。打開Int的定義如下:
struct Int : SignedInteger{ init() init(_ value: Int) static funcconvertFromIntegerLiteral(value: Int) -> Int typealias ArrayBoundType = Int func getArrayBoundValue() -> Int static var max: Int { get } static var min: Int { get } }
從定義可見Int是結構體類型。不僅是Int類型,我們熟悉的整型、浮點型、布爾型、字符串等數據類型本質上都是結構體類型。
Swift中的擴展機制可以在原始類型中添加的新功能包括:
實例計算屬性和類型計算屬性
實例方法和類型方法
構造函數
下標
還有嵌套類型等內容也可以擴展,擴展還可以遵從協議。