私はSwift 3チュートリアルとドキュメンテーションに行きます。プロトコルを扱う際に誰もが使用しているデザインパターンがあることがわかります。これは、少量の変数(時には1つまたは2つ)を含むプロトコルを宣言し、このプロトコルの拡張を作成し、いくつかのメソッドを定義する拡張で始めることから始まります。例えば、(これは単なるデモンストレーションのために、本当に愚かなコードサンプルです):独自のプロトコルを拡張するのはなぜですか?
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 }
}
ありがとう、 ボリス。
2番目の例はコンパイルされません。 - Lookup「デフォルトの実装を提供する」はhttps://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Protocols.htmlにあります。 –