本文講的是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...