Swift 协议学习笔记

什么是协议?

在 Swift 中,协议(Protocol)定义了方法、属性和其他特定任务的蓝图或模板。它只描述了这些任务的实现,而不提供它们如何实现或在何时实现的特定细节。

如何声明一个协议

协议可以被定义为与类或结构体一样的类型。协议使用 protocol 关键字来声明。

swiftCopy Code
protocol SomeProtocol { // Define protocol requirements here }

协议定义属性和方法

定义属性

协议可以定义实例属性、类型属性和静态属性。协议定义属性的语法与类或结构体定义属性的语法相同。

swiftCopy Code
protocol SomeProtocol { var someProperty: Int { get set } static var someTypeProperty: Int { get set } }

定义方法

协议中定义的方法可以是实例方法、类型方法以及可变参数方法。协议方法的语法与类或结构体方法的语法相同。

swiftCopy Code
protocol SomeProtocol { func someMethod() static func someTypeMethod() mutating func someMutatingMethod() }

使用协议

使用协议需要遵循(Conform)它。对于一个类或结构体来说,它可以同时遵循多个协议。

swiftCopy Code
struct SomeStruct: SomeProtocol, AnotherProtocol { // Structure definition goes here }

协议中的实例

swiftCopy Code
protocol FullyNameable { var fullName: String { get } } struct Person: FullyNameable { var name: String var fullName: String { return name } } let john = Person(name: "John") print(john.fullName) // Output: "John"

在上面这段代码中,Person 结构体遵循了 FullyNameable 协议,并且实现了 fullName 属性。在打印 john.fullName 时,输出的是结构体中的 name 属性。

总结

协议是 Swift 中非常重要的概念之一,它能够让我们定义蓝图或模板来描述方法、属性和其他任务的实现。遵循协议可以保证类型符合协议的要求,并且确保了类型可以被用于预期的方式。