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