/

Swift 通訊協定

Swift 通訊協定

本教程屬於 Swift 系列

通訊協定是一種讓不同類型的對象具有共同功能的方法。

通訊協定的定義如下:

1
2
3
protocol Mammal {

}

結構體和類別可以採用通訊協定:

1
2
3
4
5
6
7
struct Dog: Mammal {

}

class Cat: Mammal {

}

通訊協定可以定義屬性和方法,但不提供值和實現,結構體/類別必須實現它們:

1
2
3
4
protocol Mammal {
var age: Int { get set }
func walk()
}

屬性可以定義為 getget set。如果是 get,則屬性必須實現為只讀,并帶有一個 getter。

任何採用該通訊協定的類型必須遵從該協定,即實現這些方法或提供這些屬性:

1
2
3
4
5
6
7
8
9
10
11
12
13
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")
}
}

結構體和類別可以採用多個通訊協定:

1
2
3
4
5
6
7
struct Dog: Mammal, Animal {

}

class Cat: Mammal, Animal {

}

注意,對於類別來說,這與定義超類的語法相同。如果有超類,則在冒號之後將其列為第一個項目。