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中查找「提供默認實現」。 –