swift學習記錄(擴充套件)

2021-07-09 03:24:39 字數 1682 閱讀 9255

擴充套件就是向乙個已有的類、結構體、列舉型別或者協議型別新增新功能。

基本 語法

使用關鍵字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 對屬性的規定 協議中的...