Swift 协议学习笔记
什么是协议?
在 Swift 中,协议(Protocol)定义了方法、属性和其他特定任务的蓝图或模板。它只描述了这些任务的实现,而不提供它们如何实现或在何时实现的特定细节。
如何声明一个协议
协议可以被定义为与类或结构体一样的类型。协议使用 protocol
关键字来声明。
swiftCopy Codeprotocol SomeProtocol {
// Define protocol requirements here
}
协议定义属性和方法
定义属性
协议可以定义实例属性、类型属性和静态属性。协议定义属性的语法与类或结构体定义属性的语法相同。
swiftCopy Codeprotocol SomeProtocol {
var someProperty: Int { get set }
static var someTypeProperty: Int { get set }
}
定义方法
协议中定义的方法可以是实例方法、类型方法以及可变参数方法。协议方法的语法与类或结构体方法的语法相同。
swiftCopy Codeprotocol SomeProtocol {
func someMethod()
static func someTypeMethod()
mutating func someMutatingMethod()
}
使用协议
使用协议需要遵循(Conform)它。对于一个类或结构体来说,它可以同时遵循多个协议。
swiftCopy Codestruct SomeStruct: SomeProtocol, AnotherProtocol {
// Structure definition goes here
}
协议中的实例
swiftCopy Codeprotocol 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 中非常重要的概念之一,它能够让我们定义蓝图或模板来描述方法、属性和其他任务的实现。遵循协议可以保证类型符合协议的要求,并且确保了类型可以被用于预期的方式。