Swift2學習 Swift概覽6 協議和擴充套件

2021-07-04 08:39:45 字數 1243 閱讀 3283

協議和擴充套件

用protocol宣告乙個協議。

protocol exampleprotocol

mutating func adjust()

}類,列舉和結構體都可以接受協議。

class ******class: exampleprotocol

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

a.adjust()

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

struct ******structture: exampleprotocol

}var b = ******structture()

b.adjust()

let bdescription = b.******description練習

寫乙個實習該介面的列舉

注意宣告******structture

的時候mutating

關鍵字用來標記可以修改結構體的方法。******class

的宣告不需要標記任何方法因為類中的方法經常會修改類。

使用extension為現有的型別新增功能,比如新增乙個計算屬性的方法。你可以使用擴充套件給任何型別新增協議,甚至是你從外部庫或者框架中匯入的型別。

extension int: exampleprotocol

mutating func adjust()

}print(7.******description)

var t: int = 6

t.adjust()練習

給double型別寫乙個擴充套件,新增absolutevalue功能。

你可以像使用其他命名型別一樣使用協議名--例如,建立乙個有不同型別但是都實現同乙個介面。當你處理型別是協議的值時,介面的外部定義方法不可用。

let protocolvalue: exampleprotocol = a

print(protocolvalue.******description)

//print(protocolvalue.anotherproperty)  //uncomment to see the error

即使protocolvalue執行時的型別是******class,編譯器會把他的型別當做exampleprotocol

。這意味著你不能呼叫類的屬性和方法除非在協議中就有。

另外:發現github上已經有翻譯好的了。鏈結

我仍會繼續翻譯下去,做為自己學習的過程。

Swift2學習 Swift概覽2 控制流

控制流 使用if和switch構建條件語句,使用for in,for,while和repeat while構建迴圈語句。括號括主條件語句或迴圈變數是可選的。但是擴主主語句是必須的。for score in individualscores else if score 50 else print te...

Swift2學習 Swift概覽4 物件和類

物件和類 使用class並在其後面跟著類名來建立乙個類。類中常量或者變數已同樣的方法宣告,除非他是類的上下文 類之外 同樣的,方法和類以同樣的方式宣告。class shape 練習 通過let新增乙個常量屬性,並新增另外乙個方法來使用這個引數。通過在類名之後放置一對圓括號來建立乙個類物件。通過小數點...

從零學習Swift 2

定義let 定義常量,一經賦值不允許再修改 var 定義變數,賦值之後仍然可以修改 常量 定義常量並且直接設定數值 let x 20 常量數值一經設定,不能修改,以下 會報錯 x 30 使用 型別 僅僅只定義型別,而沒有設定數值 let x1 int 常量有一次設定數值的機會,以下 沒有問題,因為 ...