Swift學習筆記 協議擴充套件

2021-08-31 01:36:32 字數 1243 閱讀 2449

在swift中進行物件導向程式設計時,盡量使用協議和泛型,而不是類繼承,因為過深的繼承層次很容易讓**充滿難以理解的類。

前面我們介紹過了類的擴充套件,協議的擴充套件也是類似的,協議擴充套件可以新增現有的計算屬性和方法,不能新增儲存屬性。擴充套件不會增加協議的需求。

下面的**中,所有實現worker協議的結構體都獲得了乙個getdesc方法。

protocol

worker

var worktime:

int}

struct

teacher

:worker

struct

coder

:worker

extension

worker

}var coder=

coder()

print

(coder.

getdesc()

)

和泛型一樣,協議也能使用where子句進行型別限制,下面的**擴充套件了sequence協議,使陣列元素為worker時新增乙個printallworker方法。

extension

sequence

where

iterator

.element

==worker}}

let workers:

[worker]=

[coder()

,teacher()

]workers.

printallworker

()

在coder型別中可以使用同名方法覆蓋協議擴充套件中的方法,不過當coder當做乙個worker來使用的時候還是會呼叫worker中的方法。

struct

coder

:worker

}let workers:

[worker]=

[coder()

,teacher()

]//i am a coder,i work 10 hours everday

//i am a teacher,i work 8 hours everday

workers.

printallworker()

//hello world

let coder=

coder()

print

(coder.

getdesc()

)

Swift 學習筆記 協議

如果類含有父類,則應當將父類放在所有的協議之前。協議 protocol oneprotocol或者 var argumentone int 唯讀 var argumenttwo int 讀寫 static var argumentclass int 類 class person oneprotoco...

swift 協議和擴充套件

在擴充套件裡新增協議遵循 你可以擴充套件乙個已經穿在的型別來採納和遵循乙個新的協議,舊算時你無法訪問現有的型別的源 也行,擴充套件可以新增新的屬性 方法 和下標到已經存在的型別。並且因此允許你新增協議需要的任何結果 from import uikit protocol textrepresentab...

Swift學習筆記十六 協議

protocol 協議 用於統一方法和屬性的名稱,而不實現不論什麼功能。協議可以被類。列舉。結構體實現。滿足協議要求的類,列舉,結構體被稱為協議的 遵循者。遵循者須要提供 協議指定的成員,如屬性,方法,操作符,下標等。一 協議的基本的語法 咱們還是先上 吧 protocol human var is...