本教程屬於 Swift 系列
通訊協定是一種讓不同類型的對象具有共同功能的方法。
通訊協定的定義如下:
protocol Mammal {
}
結構體和類別可以採用通訊協定:
struct Dog: Mammal {
}
class Cat: Mammal {
}
通訊協定可以定義屬性和方法,但不提供值和實現,結構體/類別必須實現它們:
protocol Mammal {
var age: Int { get set }
func walk()
}
屬性可以定義為 get
或 get set
。如果是 get
,則屬性必須實現為只讀,并帶有一個 getter。
任何採用該通訊協定的類型必須遵從該協定,即實現這些方法或提供這些屬性:
struct Dog: Mammal {
var age: Int = 0
func walk() {
print("The dog is walking")
}
}
class Cat: Mammal {
var age: Int = 0
func walk() {
print("The cat is walking")
}
}
結構體和類別可以採用多個通訊協定:
struct Dog: Mammal, Animal {
}
class Cat: Mammal, Animal {
}
注意,對於類別來說,這與定義超類的語法相同。如果有超類,則在冒號之後將其列為第一個項目。