熟悉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...