Swift 面向協議程式設計入門

2021-09-23 01:33:48 字數 2054 閱讀 4705

本文講的是swift 面向協議程式設計入門,

class humanclass  

}var classyhuman = humanclass(name: "bob")

classyhuman.name // "bob"

var newclassyhuman = classyhuman // created a "copied" object

newclassyhuman.name = "bobby"

classyhuman.name // "bobby"

struct humanstruct 

var humanstruct = humanstruct(name: "bob" )

var newhumanstruct = humanstruct // copy and paste

newhumanstruct.name = "bobby"

humanstruct.name // "bob"

當時使用了大量的父類(太多繼承層級),在不同的類裡面跳來跳去編寫**或者修復 bug 都會變得非常棘手。

因為物件都是指向記憶體中的同乙個空間,如果你建立了乙個拷貝,並且對它的屬性進行了一點小改動,它會影響到其餘的物件。(引用導致的易變性)

咆哮 1

、咆哮 2

、咆哮 3

、咆哮 4

protocol human 

var race: string

func sayhi()

}

struct korean: human 

}

struct american: human 

}

protocol superhuman: human  

func punch()

}

//  超過 9000

struct supersaiyan: superhuman

func punch()

}

// 例子

struct example: protocolone, protocoltwo

// 會說英語的超級動物

protocol superanimal

extension superanimal 

}

class donkey: superanimal 

var ramon = donkey()

ramon.speakenglish() // "i speak english, pretty cool, huh?"

protocol fightable 

struct structkangaroo: fightable }

class classkangaroo: fightable

}

let structkang = structkangaroo()

let classkang = classkangaroo()

var kangaroos: [fightable] = [structkang, classkang]
for kang in kangaroos 

// "puuook"

// "pakkkk"

,那裡我和我的讀者有很多的互動。再見!

原文發布時間為:2023年2月3日

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

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

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

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

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

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