Swift面向協議程式設計入門指北

2021-09-11 12:24:35 字數 1542 閱讀 7398

熟悉objective-c語言的同學們肯定對協議都不陌生,在swift中蘋果將protocol這種語法發揚的更加深入和徹底。swift中的protocol不僅能定義方法還能定義屬性,配合extension擴充套件的使用還能提供一些方法的預設實現,而且不僅類可以遵循協議,現在的列舉和結構體也能遵循協議了。 主要從以下幾點來了解以下協議程式設計

面向協議的程式設計,是一種程式設計正規化。

protocol oneprotocol 

protocol twoprotocol

//定義乙個繼承子oneprotocol 和 twoprotocol協議的新的協議: threeprotocol

protocol threeprotocol: oneprotocol, twoprotocol

複製**

日常開發中要求乙個型別同時遵守多個協議是很常見的,除了使用協議的繼承外我們還可以使用形如oneprotocol & twoprotocol的形式實現協議聚合(組合)復合多個協議到乙個要求裡。

//協議聚合成臨時的型別

typealias three = twoprotocol & oneprotocol

//協議聚合成為引數的型別

func text(paramter: oneprotocol & twoprotocol)

複製**

協議的關聯型別指的是根據使用場景的變化,如果協議中某些屬性存在「邏輯相同的而型別不同」的情況,可以使用關鍵字associatedtype來為這些屬性的型別宣告「關聯型別」。

protocol weightcalculable 

}複製**

//定義手機結構體(至於weighttype到底是什麼型別由遵守該協議的類中自己去定義)

struct mobilephone: weightcalculable

let iphone7 = mobilephone(weight: 0.138)

//定義汽車結構體

struct car: weightcalculable

let truck = car(weight: 3000_000)

複製**

與物件一樣,我們可以直接使用標準庫中的協議,你需要做的是記憶與理解這些協議的功能。

swift 3.0 之後,可能很多人會用型別退化來管理key

基本型別對於你來說可能是有意義的,但是對於編譯器來說是沒有意義的,文件是給人看的,列舉是給編譯器看的

協議可以帶有關聯型別

Swift 面向協議程式設計入門

本文講的是swift 面向協議程式設計入門,class humanclass var classyhuman humanclass name bob classyhuman.name bob var newclassyhuman classyhuman created a copied object...

Swift 面向協議程式設計之協議擴充套件

協議的命名遵循swift的標準庫,即協議名以 type able ible 結尾。例如 sequencetype,generatortype,customstringcoveeertible,type定義行為,able定義元素怎樣做事。swift 能擴充套件協議 協議可以新增方法和屬性 協議擴充套件...

學習swift面向協議程式設計 類和結構體

類定義 修飾符 class 類名 結構體定義 修飾符 struct 結構體名 修飾符可以是 private internal public 類可以用final,結構體不支援繼承而不能用final修飾,或者省略這些修飾符。類和結構體定義通常包含構造器 屬性和方法。類 類可以單繼承,可定義屬性 prop...