1
我正在通过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 }
}
感谢, 鲍里斯。
你的第二个例子不会编译。 - 在https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Protocols.html中查找“提供默认实现”。 –