协议:定义行为的契约
协议类似于其他语言中的接口。它们定义了一组方法、属性或其他需求,供结构体、类、枚举等类型去遵循和实现。协议并不实现这些需求,而是作为一种约定或合同,确保实现协议的类型会遵循特定的行为。
协议的定义和遵循
在 Swift 中,使用 protocol
关键字来定义协议。例如:
protocol ExampleProtocol {
var simpleDescription: String { get }
func exampleMethod()
}
在上述代码中,ExampleProtocol
定义了一个协议,要求遵循者实现一个只读属性 simpleDescription
和一个方法 exampleMethod()
。遵循协议非常简单,只需使用 struct
、class
或 enum
实现该协议:
struct ExampleStruct: ExampleProtocol {
var simpleDescription: String = "This is an example."
func exampleMethod() {
print("Example method executed.")
}
}
协议中的属性和方法要求
协议可以要求属性是只读或读写,还可以要求特定的方法实现:
protocol FullyNamed {
var fullName: String { get } // 只读属性
var age: Int { get set } // 读写属性
}
protocol Greetable {
func greet(name: String) -> String
}
实现这些协议时,遵循者需要满足这些要求:
struct Person: