【发布时间】:2017-02-10 20:59:38
【问题描述】:
我正在浏览 Swift 3 教程和文档,我发现每个人在处理协议时都在使用一种设计模式。它首先声明一个带有少量变量(有时只有一两个变量)的协议,然后创建该协议的扩展并在扩展中定义一些方法。例如(这确实是一个愚蠢的代码示例,仅用于演示):
protocol Bicycle {
var numberOfWheels: Int {get}
var isMoving: Bool {get set}
}
extension Bicycle {
func startPedaling() { isMoving = true }
func stopPedaing() { isMoving = false }
}
协议和扩展由我完全控制(因为我是开发人员,我可以访问此资源文件)。而且,它们都驻留在同一个资源文件中。
那么,为什么方法驻留在扩展中而不是在原始协议中?例如:
protocol Bicycle {
var numberOfWheels: Int {get}
var isMoving: Bool {get set}
func startPedaling() { isMoving = true }
func stopPedaing() { isMoving = false }
}
谢谢, 鲍里斯。
【问题讨论】:
-
您的第二个示例无法编译。 – 在developer.apple.com/library/content/documentation/Swift/… 中查找“提供默认实现”。