Swift簡明教程(六)協議與擴充套件

2021-06-22 08:14:31 字數 1467 閱讀 1487

使用protocol關鍵字宣告協議。

protocol exampleprotocol 

mutating func adjust()

}

類、列舉和結構體都能夠響應協議。

class ******class : exampleprotocol 

}var a = ******class()

a.adjust()

let adescription = a.******description

struct ******structure: exampleprotocol

}var b = ******structure()

b.adjust()

let bdescription = b.******description

試驗

定義乙個列舉型別並響應上面的協議

宣告結構體******structure時使用的mutating關鍵字標記會對結構體進行修改的方法。由於類中的方法總是可以修改類的物件,因此不需要在******class中進行標明。

swift使用extension關鍵字給乙個已經存在的型別新增功能。你可以給任何地方宣告的型別使用擴充套件,使得它響應某個協議,不管它是從框架還是其它地方匯入的。

extension int: exampleprotocol 

mutating func adjust()

}7.******description

試驗

double型別使用擴充套件新增乙個absolutevalue屬性。

可以像其它資料型別一樣用協議來宣告變數或這常量,例如建立乙個物件的集合,使得它可以容納可以響應同乙個協議的不同資料型別的值。當你使用這些值的時候,不能呼叫協議以外的方法。

let protocolvalue: exampleprotocol = a

protocolvalue.******description

//uncomment to see the error

儘管protocolvalue變數是******class的物件,但是編譯器把它當成是exampleprotocol型別。這就意味著你只能訪問協議裡定義的方法和屬性。

Swift簡明教程(五)列舉與結構體

使用enum關鍵字建立列舉型別。與類類似,列舉型別中一樣可以定義方法。enum rank int let ace rank.ace let acerawvalue ace.torow 試驗 編寫乙個函式用來比較兩個rank列舉值 在上面的 中,列舉型別的原始值是int型別,定義的時候只明確了第乙個,...

RMAN簡明教程之六 RMAN的管理

一 report命令 report 命令可以檢測那些檔案需要備份,那些備份能被刪除以及那些檔案能不能獲得的資訊,如 報告資料庫的所有能備份資料檔案物件 report schema 或者 rman report schema at time sysdate 14 rman report schema ...

RMAN簡明教程之六 RMAN的管理

一 report命令 report 命令可以檢測那些檔案需要備份,那些備份能被刪除以及那些檔案能不能獲得的資訊,如 報告資料庫的所有能備份資料檔案物件 report schema 或者 rman report schema at time sysdate 14 rman report schema ...