教程 swift tutorial

协议扩展与默认实现

Swift 支持在协议中通过扩展添加默认实现,减少重复代码。

协议扩展

使用 extension 为协议添加方法或计算属性:

swift
protocol Greetable {
    var name: String { get }
    func greet()
}

extension Greetable {
    func greet() {
        print("你好,\(name)!")
    }
}

`

默认实现

遵循协议的类型无需实现默认方法即可使用:

swift
struct Person: Greetable {
    var name: String
}

let p = Person(name: "小明")
p.greet()  // 输出:你好,小明!

重写默认实现

类型可以自定义实现,覆盖协议扩展中的默认方法:

swift
struct Dog: Greetable {
    var name: String
    func greet() {
        print("汪汪,我是狗狗 \(name)")
    }
}

协议扩展增强协议灵活性,实现面向协议编程的强大特性。