11.方法
-
實例方法
//實例方法是屬于某個特定類、結構體或者枚舉類型實例的?法。實例方法提供訪問和修改實例 屬性的方法或提供與實例目的相關的功能,并以此來支撐實例的功能。實例方法的語法與函數 完全一致。 //self屬性:類型的每一個實例都有一個隱含屬性叫做 self , self 完全等同于該實例本身。 - 實際上,你不必在你的代碼?面經常寫 self 。不論何時,只要在一個方法中使?一個已知的 屬性或者方法名稱,如果你沒有明確地寫 self ,Swift 假定你是指當前實例的屬性或者?法。 - 使?這條規則的主要場景是實例方法的某個參數名稱與實例的某個屬性名稱相同的時候。在這種情況下,參數名稱享有優先權,并且在引?屬性時必須使?一種更嚴格的方式。這時你可以使用self屬性來區分參數名稱和屬性名稱。 //在實例方法中修改值類型 struct Point { var x = 0.0, y = 0.0 mutating func moveBy(x deltaX: Double, y deltaY: Double) { x += deltaX y += deltaY } } //在可變?法中給 self 賦值 struct Point { var x = 0.0, y = 0.0 mutating func moveBy(x deltaX: Double, y deltaY: Double) { self = Point(x: x + deltaX, y: y + deltaY) } } 結構體和枚舉是值類型。默認情況下,值類型的屬性不能在它的實例方法中被修改。 但是,如果你確實需要在某個特定的方法中修改結構體或者枚舉的屬性,你可以為這個?法選擇 可變(mutating) 行為,然后就可以從其?法內部改變它的屬性;并且這個方法做的任何 改變都會在方法執?結束時寫回到原始結構中。?法還可以給它隱含的 self 屬性賦予一個全新的實例,這個新實例在?法結束時會替換現存實例。
-
類型方法
//定義在類型本身上調用的?法,這種方法 就叫做類型?法。在?法的 func 關鍵字之前加上關鍵字 static ,來指定類型方法。類還可以?關鍵字 class 來指定,從而允許?類重寫父類該?法的實現。 class SomeClass { class func someTypeMethod() { // 在這里實現類型方法 } } SomeClass.someTypeMethod()
12.下標
下標:下標允許你通過在實例名稱后?的?括號中傳?一個或者多個索引值來對實例進行存取。定義下標使用
subscript 關鍵字,指定一個或多個輸?參數和返回類型;與實例?法不同的是,下標可以設定為讀寫或只讀。
1.下標語法
subscript(index: Int) -> Int {
get {
// 返回一個適當的 Int 類型的值
}
set(newValue) {
// 執行適當的賦值操作,如果不指定參數,setter 會提供?個名為 newValue 的默認參數。
}
}