Swift5.1方法&下標(biāo)

11.方法

  • 實(shí)例方法

    //實(shí)例方法是屬于某個(gè)特定類、結(jié)構(gòu)體或者枚舉類型實(shí)例的?法。實(shí)例方法提供訪問和修改實(shí)例 屬性的方法或提供與實(shí)例目的相關(guān)的功能,并以此來(lái)支撐實(shí)例的功能。實(shí)例方法的語(yǔ)法與函數(shù) 完全一致。
    
    //self屬性:類型的每一個(gè)實(shí)例都有一個(gè)隱含屬性叫做 self , self 完全等同于該實(shí)例本身。
    - 實(shí)際上,你不必在你的代碼?面經(jīng)常寫 self 。不論何時(shí),只要在一個(gè)方法中使?一個(gè)已知的 屬性或者方法名稱,如果你沒有明確地寫 self ,Swift 假定你是指當(dāng)前實(shí)例的屬性或者?法。
    - 使?這條規(guī)則的主要場(chǎng)景是實(shí)例方法的某個(gè)參數(shù)名稱與實(shí)例的某個(gè)屬性名稱相同的時(shí)候。在這種情況下,參數(shù)名稱享有優(yōu)先權(quán),并且在引?屬性時(shí)必須使?一種更嚴(yán)格的方式。這時(shí)你可以使用self屬性來(lái)區(qū)分參數(shù)名稱和屬性名稱。
    
    //在實(shí)例方法中修改值類型
    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) 
        }
    }
    
    結(jié)構(gòu)體和枚舉是值類型。默認(rèn)情況下,值類型的屬性不能在它的實(shí)例方法中被修改。
    但是,如果你確實(shí)需要在某個(gè)特定的方法中修改結(jié)構(gòu)體或者枚舉的屬性,你可以為這個(gè)?法選擇 可變(mutating) 行為,然后就可以從其?法內(nèi)部改變它的屬性;并且這個(gè)方法做的任何 改變都會(huì)在方法執(zhí)?結(jié)束時(shí)寫回到原始結(jié)構(gòu)中。?法還可以給它隱含的 self 屬性賦予一個(gè)全新的實(shí)例,這個(gè)新實(shí)例在?法結(jié)束時(shí)會(huì)替換現(xiàn)存實(shí)例。
    
    
  • 類型方法

    //定義在類型本身上調(diào)用的?法,這種方法 就叫做類型?法。在?法的 func 關(guān)鍵字之前加上關(guān)鍵字 static ,來(lái)指定類型方法。類還可以?關(guān)鍵字 class 來(lái)指定,從而允許?類重寫父類該?法的實(shí)現(xiàn)。
    class SomeClass {
        class func someTypeMethod() {
          // 在這里實(shí)現(xiàn)類型方法 
        }
    } 
    SomeClass.someTypeMethod()
    

12.下標(biāo)

下標(biāo):下標(biāo)允許你通過在實(shí)例名稱后?的?括號(hào)中傳?一個(gè)或者多個(gè)索引值來(lái)對(duì)實(shí)例進(jìn)行存取。定義下標(biāo)使用
subscript 關(guān)鍵字,指定一個(gè)或多個(gè)輸?參數(shù)和返回類型;與實(shí)例?法不同的是,下標(biāo)可以設(shè)定為讀寫或只讀。
1.下標(biāo)語(yǔ)法
 subscript(index: Int) -> Int { 
     get {
        // 返回一個(gè)適當(dāng)?shù)?Int 類型的值 
     }
     set(newValue) {
        // 執(zhí)行適當(dāng)?shù)馁x值操作,如果不指定參數(shù),setter 會(huì)提供?個(gè)名為 newValue 的默認(rèn)參數(shù)。
    } 
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容