Swift語言中的協議

2021-07-09 09:55:38 字數 1405 閱讀 5865

參考自

protocol(協議)用於統一方法和屬性的名稱,而不實現任何功能。協議能夠被類,列舉,結構體實現,滿足協議要求的類,列舉,結構體被稱為協議的遵守者。

協議的語法:

protocol 協議名字

協議的使用:

在類,結構體,列舉的名稱後加上協議名稱,中間以冒號:分隔即可使用協議;使用多個協議時,各協議之間用逗號,分隔,如下所示:

struct somestructure: firstprotocol, anotherprotocol

注:當某個類含有父類的同時還使用了協議,應當把父類放在所有的協議之前,如下所示:

class someclass: somesuperclass, firstprotocol, anotherprotocol

屬性要求

協議能夠要求其遵守者必須含有一些特定名稱和型別的例項屬性(instance property)或類屬性 (type property),也能夠要求屬性的(設定許可權)settable 和(訪問許可權)gettable,但它不要求屬性是儲存型屬性(stored property)還是計算型屬性(calculate property)。

通常前置var關鍵字將屬性宣告為變數。在屬性宣告後寫上表示屬性為可讀寫的。用來表示屬性為可讀的。即使你為可讀的屬性實現了setter方法,它也不會出錯。

protocol someprotocol

var doesnotneedtobesettable: int

}用類來實現協議時,使用class關鍵字來表示該屬性為類成員;用結構體或列舉實現協議時,則使用static關鍵字來表示:

protocol anotherprotocol

}protocol fullynamed

}fullynamed協議含有fullname屬性。因此其遵循者必須含有乙個名為fullname,型別為string的可讀屬性。

person結構體含有乙個名為fullname的儲存型屬性,完整的遵循了協議。(若協議未被完整遵循,編譯時則會報錯)。

如下所示,startship類遵循了fullynamed協議:

class starship: fullynamed

var fullname: string

} var ncc1701 = starship(name: 「enterprise」, prefix: 「uss」)

// ncc1701.fullname == 「uss enterprise」

starship類將fullname實現為可讀的計算型屬性。它的每乙個例項都有乙個名為name的必備屬性和乙個名為prefix的可選屬性。 當prefix存在時,將prefix插入到name之前來為starship構建fullname。

10 Swift語言中函式的使用

1 swift中的函式構成 1 函式必須以func開頭,然後跟著函式名,接下來是函式引數列表,最後是返回型別,如 func add 引數列表 返回值型別列表 2 函式引數列表和返回值型別列表必須使用圓括號括著,且函式引數列表和返回值型別列表必須用 分割,請看 1 3 其中引數列表和返回值型別都可以為...

9 Swift語言中switch條件語句的基本用法

1 swift語言中switch的case後邊可以跟多個值,進行多個值的判斷,可以使用字串作為判斷,並且case後邊必須跟一條語句,不能設為空語句,還有需要注意的是在執行case語句之後就會直接結束,而不會執行下乙個case,除非使用fallthrough語句 注意 fallthrough不能在de...

詳解Swift語言中的類與結構體

類 在 swift 中類是建立靈活的構建塊。類似於常量,變數和函式,使用者可以定義的類的屬性和方法。swift給我們提供了宣告類,而無需使用者建立介面和實現檔案的功能。swift 允許我們建立類作為單個檔案和外部介面,將預設在類一次初始化來建立。使用類的好處 類和結構的共同特徵 語法複製 如下 cl...