擴充套件就是向乙個已有的類、結構體、列舉型別或者協議型別新增新功能。
基本 語法
使用關鍵字extension來宣告乙個擴充套件
extension 型別名
擴充套件可以:
1、新增計算性屬性 和 靜態計算性屬性
extension double
var m : double
var cm: double
var mm: double
}var km = 1.0.km
print("1m = \(km)km")
//輸出 1m = 0.001km
var cm = 1.0.cm
print("1m = \(cm)cm")
//輸出 1m = 100.0cm
2、定義例項方法和靜態方法
extension double
//靜態方法
static func tostring(s:double)->string
}var d2s = 20.0.tostring()
print(d2s)
// 輸出 這是例項方法返回的string型別的20.0
var s = double.tostring(30.0)
print(s)
// 輸出 這是靜態方法返回的string型別的30.0
3、提供新的構造器
struct size
struct point
struct rect
//呼叫 結構體 逐一成員構造器
var rect = rect(origin: point(x: 10.0, y: 20.0), size: size(width: 20.0, height: 3.0))
extension rect
}var exrect = rect(center: point(x: 10.0, y: 20.0))
4、定義下標
extension int
return (self / decimalbase) % 10
}}295[0]
// returns 5
295[1]
// returns 9
295[2]
// returns 2
295[3]
// retrun 0
如果int 沒有足夠的位數會返回0,因為它會在數字左邊自動補0
5、定義和使用新的巢狀型別
extension int
var kind: kind
}}func printintegerkinds(numbers: [int])
}}printintegerkinds([3, 19, -27, 0, -6, 0, 7])
// 輸出 + + - 0 - 0 +
6、使乙個已有型別符合某個協議
將在協議中記錄
swift學習記錄(Optional)
對swift語法的陌生主要 於兩個地方,乙個是區別於其他語言的語法形式,比如c 中的int i 與swift中的var i int 另外乙個是語法的功能,swift中的語法功能千奇百怪。從這篇文章開始,主要通過閱讀與搜尋the swift programing language 來學習,記錄學習過程...
swift學習記錄(列舉)
列舉定義了乙個通用型別的一組相關值,使我們可以在 中以一種安全的方式來使用這些值。基本語法 使用 enum 關鍵字定義列舉 enum 列舉名 enum compasspoint 成員值乙個列舉中定義的值,是列舉的成員值 成員 case 關鍵字表示乙個新的成員值將被定義。列舉的成員值不會被預設賦予乙個...
swift 學習記錄(協議)
協議是為方法 屬性等定義一套規範,沒有具體的實現。類,結構體或列舉型別都可以遵循協議,並提供具體實現來完成協議定義的方法和功能。基本語法 protocol 協議名稱 型別使用冒號 來遵循協議,遵循多個協議時,用逗號 隔開 protocol 型別名 協議名1,協議名2,協議名3 對屬性的規定 協議中的...